From af40110814a0143383b02a6c6cb1ee1b9b28e458 Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 10 Jan 2024 13:34:18 -0500 Subject: [PATCH 01/13] bump fluentbit to 2.2.0 in rancher v2.7 --- .../rancher-logging/generated-changes/patch/values.yaml.patch | 4 ++-- packages/rancher-logging/package.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rancher-logging/generated-changes/patch/values.yaml.patch b/packages/rancher-logging/generated-changes/patch/values.yaml.patch index a25febe797..bd5f4a9c8f 100644 --- a/packages/rancher-logging/generated-changes/patch/values.yaml.patch +++ b/packages/rancher-logging/generated-changes/patch/values.yaml.patch @@ -87,14 +87,14 @@ + tag: v0.4.0 + fluentbit: + repository: rancher/mirrored-fluent-fluent-bit -+ tag: 1.9.5 ++ tag: 2.2.0 + nodeagent_fluentbit: + os: "windows" + repository: rancher/fluent-bit + tag: 1.8.9 + fluentbit_debug: + repository: rancher/mirrored-fluent-fluent-bit -+ tag: 1.9.5-debug ++ tag: 2.2.0-debug + fluentd: + repository: rancher/mirrored-banzaicloud-fluentd + tag: v1.14.6-alpine-5 diff --git a/packages/rancher-logging/package.yaml b/packages/rancher-logging/package.yaml index 159ef4d9d2..5cdd0228e4 100644 --- a/packages/rancher-logging/package.yaml +++ b/packages/rancher-logging/package.yaml @@ -1,5 +1,5 @@ url: https://kubernetes-charts.banzaicloud.com/charts/logging-operator-3.17.10.tgz -version: 102.0.1 +version: 102.0.2 additionalCharts: - workingDir: charts-crd crdOptions: From 4d6e0074aa00a4dffc23cdc68f2bcecaf34801f5 Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 17 Jan 2024 10:17:38 -0500 Subject: [PATCH 02/13] rancher logging : support kubernetes 1.27 Signed-off-by: Alexandre Lamarre --- .../rancher-logging/generated-changes/patch/Chart.yaml.patch | 2 +- packages/rancher-logging/package.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rancher-logging/generated-changes/patch/Chart.yaml.patch b/packages/rancher-logging/generated-changes/patch/Chart.yaml.patch index d3059dfdb3..bafcf27724 100644 --- a/packages/rancher-logging/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-logging/generated-changes/patch/Chart.yaml.patch @@ -6,7 +6,7 @@ + catalog.cattle.io/certified: rancher + catalog.cattle.io/deploys-on-os: windows + catalog.cattle.io/display-name: Logging -+ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.27.0-0' ++ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: cattle-logging-system + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 diff --git a/packages/rancher-logging/package.yaml b/packages/rancher-logging/package.yaml index 5cdd0228e4..60a30bedf5 100644 --- a/packages/rancher-logging/package.yaml +++ b/packages/rancher-logging/package.yaml @@ -1,5 +1,5 @@ url: https://kubernetes-charts.banzaicloud.com/charts/logging-operator-3.17.10.tgz -version: 102.0.2 +version: 102.0.3 additionalCharts: - workingDir: charts-crd crdOptions: From 696ccf63e1ab1fb7b1b7f158e0240c2d47ff0a69 Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Mon, 22 Jan 2024 15:49:06 -0500 Subject: [PATCH 03/13] make charts Signed-off-by: Alexandre Lamarre --- .../rancher-logging-crd-102.0.3+up3.17.10.tgz | Bin 0 -> 83284 bytes .../rancher-logging-102.0.3+up3.17.10.tgz | Bin 0 -> 14322 bytes .../102.0.3+up3.17.10/Chart.yaml | 10 + .../102.0.3+up3.17.10/README.md | 2 + ...xtensions.banzaicloud.io_eventtailers.yaml | 2123 +++ ...extensions.banzaicloud.io_hosttailers.yaml | 2305 +++ .../logging.banzaicloud.io_clusterflows.yaml | 2056 +++ ...logging.banzaicloud.io_clusteroutputs.yaml | 11820 ++++++++++++++++ .../logging.banzaicloud.io_flows.yaml | 2048 +++ .../logging.banzaicloud.io_loggings.yaml | 9771 +++++++++++++ .../logging.banzaicloud.io_outputs.yaml | 11808 +++++++++++++++ .../102.0.3+up3.17.10/.helmignore | 22 + .../102.0.3+up3.17.10/Chart.yaml | 25 + .../102.0.3+up3.17.10/README.md | 132 + .../102.0.3+up3.17.10/app-readme.md | 45 + .../102.0.3+up3.17.10/templates/NOTES.txt | 0 .../templates/_generic_logging.yaml | 121 + .../102.0.3+up3.17.10/templates/_helpers.tpl | 179 + .../templates/clusterrole.yaml | 318 + .../templates/clusterrolebinding.yaml | 18 + .../102.0.3+up3.17.10/templates/crds.yaml | 6 + .../templates/deployment.yaml | 77 + .../templates/loggings/aks/logging.yaml | 18 + .../templates/loggings/eks/logging.yaml | 19 + .../templates/loggings/gke/logging.yaml | 18 + .../templates/loggings/k3s/configmap.yaml | 57 + .../templates/loggings/k3s/daemonset.yaml | 110 + .../loggings/k3s/logging-k3s-openrc.yaml | 19 + .../loggings/kube-audit/logging.yaml | 25 + .../templates/loggings/rke/configmap.yaml | 29 + .../templates/loggings/rke/daemonset.yaml | 122 + .../templates/loggings/rke2/configmap.yaml | 69 + .../templates/loggings/rke2/daemonset.yaml | 116 + .../templates/loggings/root/logging.yaml | 82 + .../102.0.3+up3.17.10/templates/psp.yaml | 34 + .../102.0.3+up3.17.10/templates/service.yaml | 20 + .../templates/serviceMonitor.yaml | 30 + .../templates/serviceaccount.yaml | 14 + .../templates/userroles.yaml | 35 + .../templates/validate-install-crd.yaml | 20 + .../templates/validate-install.yaml | 5 + .../templates/validate-psp-install.yaml | 7 + .../102.0.3+up3.17.10/values.yaml | 240 + index.yaml | 43 + 44 files changed, 44018 insertions(+) create mode 100644 assets/rancher-logging-crd/rancher-logging-crd-102.0.3+up3.17.10.tgz create mode 100644 assets/rancher-logging/rancher-logging-102.0.3+up3.17.10.tgz create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/Chart.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/README.md create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_flows.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml create mode 100644 charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/.helmignore create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/Chart.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/README.md create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/app-readme.md create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/NOTES.txt create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/_generic_logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/_helpers.tpl create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrole.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/crds.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/deployment.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/aks/logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/eks/logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/gke/logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/kube-audit/logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/root/logging.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/psp.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/service.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/serviceMonitor.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/serviceaccount.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/userroles.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install-crd.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/templates/validate-psp-install.yaml create mode 100644 charts/rancher-logging/102.0.3+up3.17.10/values.yaml diff --git a/assets/rancher-logging-crd/rancher-logging-crd-102.0.3+up3.17.10.tgz b/assets/rancher-logging-crd/rancher-logging-crd-102.0.3+up3.17.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..89df9f94fe1b49d874ed193e3492f0f7e96fcd6d GIT binary patch literal 83284 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/#rL8~GCIzv1cPCS5e1 z;2EyoB20HDydm`%QVj@VO%R0Qy1y}XttQ4UvJY81g{NN)t3^~+?sfJQ0Q6cnm})Nu z3)EPDofMuC(^q@NZ6aK) zg;t}wv;srm#!vgD`o=f>eoxVzZoiu{Ovdm#E91A9nb*P!)BAhLjW6joih-kmJJOZ@ zlUA(MLjR|-9*X8IG|IdEJaWT}0C)1yAkXuISAgMYpmplq4*tj4)5MG9ra9+aq$hRH zxvuroCm&PRI-K0K`UbDy?PNCo%!?J~;jOs)U4va$>YJBH#owg-JM+Jj@?{kF>Iv!F z%bGt^088n?-lb%Ffck|8<@U|kQl@V*o!Oa^=J?*NVaO+ZU4RgdwXSPd$<$V+=Z;p> zOQU_@CN^q36c({{N#1TR3vNYRXdXCOGCk&t^L7;Wvojd%TH8nV@}|J2zE+=h`SQ%~ zI5-+ash$diY~;BI*Vspyr&3Q7KOxn2qq)M1Eg87^+@455q7m(yN_{nP;I3sOy}th0 zmzQVa%n-?H$#Jtr#JW5o&Jxbc#jt7#8&QZnBdB0G*a+!MCS`8a*>VIP>k>pwxH4iN zSQk0!zV&Kcl!FnHVF>Oj`yk7>79H>P)grGCk)2uf zvhzViX9}qdXp?9~K22qp2FvJ94I6ZnKdiP|9k)Qc@SfaGKnk`_~ zXQ^7j2(P;hl-}gwVUAG-Mx+*WkBOn>_h>Kd=f%JnF8#Y3QWKXdz8AiWK}Wc?n~zm* zH-yR*1i48!(LCgWL`u`m+4)$auDEuuOAxc;*{p2Hs-|=I41iPom9|?u1Ot|xP+BBU zlwR2@C5N?mF=)|@gW7sx9;Pt2cVt<+vY@0Gf6z5JT%ztUOp)>XK1}4+T*aGIm7>hn zsO9cZ$Tc?Ad`sGcP5Uz@#=y-Ex-_IWIITmmdJ$yh{TGGzsBVs%jBU*3k>wiD3vqak zEb*|q11D3B`+!E0-Z-$>nV*o(5Z5a=ZiYl-!FAD22Sv951n9jCp#T0Ptbqvl$i_Lk z zR=XR_W^iZiAXOMo1Kfw8XfAKtCL%$GTX}u_Jg-7vk{PC3r2v<_BFkL5&u|t$gpUI&J{{wSgZ0);?3qll zAikYUF-2rfpvoI=m#MT!Y@DMCy}c%GEz!#i%<)iny-AY6re7FdCvLXJ_qkR?kfu`L!IKMhvbNwBe?)pA|AEd%JGxZZ^~~fW>kfz#>Y@ zLN#Gh41YLjqGz(*b0$u{vdjUijLp>`w*0elr}l3rsdbN8IkxbF1glFpALA%abHRB%}!`w*;KIC?c7X?9juDkl`n!J)#G11nd?VPgCt5sVF&^90OfW zL7-N=2B3QK>7N9`6}f3B*-}suzh1DDtbHhej3mKhW6NIOr)QRZp}z_jLSYSynFHth zs+R_XQv!W6UTWT1n_#4(pei*#r3Rp=B)e1l9!51qm&$C^$xWl*FUu-AC$DteNP;Xs z2;G%xgz}q}V+BaMTV?r8hX@n)5yo`0(deZJ$Vb`a$#E;Cv!1EZ_}QVeF!-ei$fl-q zS)itRb6Ezcr8)ZZ{J&dPL~@+7E&HbNxgC2$WZP9K5T4;VMyT2?K!eQ@A{)*Q?iQPh z@-wZri{9Q+4iU_c65&i&M2kiVlQk-{urEkajxHA*G=?D1)Ah#_r0->L0Vr zm|@D_OA`DQ>nOLClY%uWCc~E;kVSBo!Aiux&1~81x`vK&K!8d@c(;jyJs0n-cX3V- zHAFR5&CE(dd^gJ9Hbc!$!eTnBhKR(^z;dThG$fI?RgjHBoXMl%kYYyCU?wI*kv+~@ zNWPZwZbqatxo4g|Re_v>9g+YZT&ygWm|`sn7;^Y>`-8YvH7Yy^B95{Q-0dx>AUNM{ z*=vB3q$o01;x{ugKocmH5H$j?*Zm9gT4c4WL&T&%O1 z6v^Q+9xb)SOZR2FpLGR@C=?orxIKZ&D2i1^qFg9eom=19Dg!u`2Uh%hAOdj$X1|d# zgR@;%)WYKJ$7nWA%}ewQj2gHL?P;gU*P-v8Vb5;p}w6VL9dos zJ@p`?1JcO>FET88Wn}py83TNxKUCt##e9iWxWtUOU75$5^JyybKu*z})o$e+|E@QD zSk!GK6?QdXwX5Lbf1-U7XIP65FxsnauxzS7ZpTbm(Ce#dj=&xj9J#{|Jg$sYLSW6# zg-#ri@1O?M?6o@OPT^M@F1A7jLrPVo}DuD492+

*)3#(SIdV7!D1;SrcVZp^G0r&vRELCD%^K-y* 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 R2*}Gz!3Kd3NDCgw{{x@K$W#CT literal 0 HcmV?d00001 diff --git a/assets/rancher-logging/rancher-logging-102.0.3+up3.17.10.tgz b/assets/rancher-logging/rancher-logging-102.0.3+up3.17.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8cc58e575a454ac9180da7a67e1e7f60abdd2d55 GIT binary patch literal 14322 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 literal 0 HcmV?d00001 diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/Chart.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/Chart.yaml new file mode 100644 index 0000000000..23e8d76bb1 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/Chart.yaml @@ -0,0 +1,10 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-logging-system + catalog.cattle.io/release-name: rancher-logging-crd +apiVersion: v1 +description: Installs the CRDs for rancher-logging. +name: rancher-logging-crd +type: application +version: 102.0.3+up3.17.10 diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/README.md b/charts/rancher-logging-crd/102.0.3+up3.17.10/README.md new file mode 100644 index 0000000000..d4beb54faf --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/README.md @@ -0,0 +1,2 @@ +# rancher-logging-crd +A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml new file mode 100644 index 0000000000..52c5401422 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml @@ -0,0 +1,2123 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: eventtailers.logging-extensions.banzaicloud.io +spec: + group: logging-extensions.banzaicloud.io + names: + kind: EventTailer + listKind: EventTailerList + plural: eventtailers + singular: eventtailer + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + containerOverrides: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + controlNamespace: + type: string + positionVolume: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + workloadMetaOverrides: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + workloadOverrides: + properties: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + containers: + items: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + initContainers: + items: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + type: array + nodeSelector: + additionalProperties: + type: string + type: object + priorityClassName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + 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: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + 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 + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + 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: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + 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 + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + 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 + type: object + required: + - controlNamespace + type: object + status: + type: object + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml new file mode 100644 index 0000000000..f16b1e5d0b --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml @@ -0,0 +1,2305 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: hosttailers.logging-extensions.banzaicloud.io +spec: + group: logging-extensions.banzaicloud.io + names: + kind: HostTailer + listKind: HostTailerList + plural: hosttailers + singular: hosttailer + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + enableRecreateWorkloadOnImmutableFieldChange: + type: boolean + fileTailers: + items: + properties: + buffer_chunk_size: + type: string + buffer_max_size: + type: string + containerOverrides: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + disabled: + type: boolean + name: + type: string + path: + type: string + read_from_head: + type: boolean + skip_long_lines: + type: string + required: + - name + type: object + type: array + systemdTailers: + items: + properties: + containerOverrides: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + disabled: + type: boolean + maxEntries: + type: integer + name: + type: string + path: + type: string + systemdFilter: + type: string + required: + - name + type: object + type: array + workloadMetaOverrides: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + workloadOverrides: + properties: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + containers: + items: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + type: array + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + initContainers: + items: + properties: + command: + items: + type: string + type: array + image: + type: string + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + pullPolicy: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + 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 + type: object + type: array + nodeSelector: + additionalProperties: + type: string + type: object + priorityClassName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + 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: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + 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 + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + 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: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + 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 + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + 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 + type: object + type: object + status: + type: object + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml new file mode 100644 index 0000000000..1702920cfa --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml @@ -0,0 +1,2056 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: clusterflows.logging.banzaicloud.io +spec: + group: logging.banzaicloud.io + names: + categories: + - logging-all + kind: ClusterFlow + listKind: ClusterFlowList + plural: clusterflows + singular: clusterflow + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Is the flow active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + filters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + globalOutputRefs: + items: + type: string + type: array + loggingRef: + type: string + match: + items: + properties: + exclude: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + namespaces: + items: + type: string + type: array + type: object + select: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + namespaces: + items: + type: string + type: array + type: object + type: object + type: array + outputRefs: + items: + type: string + type: array + selectors: + additionalProperties: + type: string + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Is the flow active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + filters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + globalOutputRefs: + items: + type: string + type: array + loggingRef: + type: string + match: + items: + properties: + exclude: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + namespaces: + items: + type: string + type: array + type: object + select: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + namespaces: + items: + type: string + type: array + type: object + type: object + type: array + outputRefs: + items: + type: string + type: array + selectors: + additionalProperties: + type: string + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml new file mode 100644 index 0000000000..ab4b63e945 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml @@ -0,0 +1,11820 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: clusteroutputs.logging.banzaicloud.io +spec: + group: logging.banzaicloud.io + names: + categories: + - logging-all + kind: ClusterOutput + listKind: ClusterOutputList + plural: clusteroutputs + singular: clusteroutput + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Is the output active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + awsElasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + endpoint: + properties: + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_arn: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_session_name: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_web_identity_token_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ecs_container_credentials_relative_uri: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + region: + type: string + secret_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + sts_credentials_region: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + flush_interval: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + azurestorage: + properties: + auto_create_container: + type: boolean + azure_container: + type: string + azure_imds_api_version: + type: string + azure_object_key_format: + type: string + azure_storage_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_account: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_sas_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + type: string + path: + type: string + slow_flush_log_threshold: + type: string + required: + - azure_container + - azure_storage_account + type: object + cloudwatch: + properties: + auto_create_stream: + type: boolean + aws_instance_profile_credentials_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sts_role_arn: + type: string + aws_sts_session_name: + type: string + aws_use_sts: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + concurrency: + type: integer + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + http_proxy: + type: string + include_time_key: + type: boolean + json_handler: + type: string + localtime: + type: boolean + log_group_aws_tags: + type: string + log_group_aws_tags_key: + type: string + log_group_name: + type: string + log_group_name_key: + type: string + log_rejected_request: + type: string + log_stream_name: + type: string + log_stream_name_key: + type: string + max_events_per_batch: + type: integer + max_message_length: + type: integer + message_keys: + type: string + put_log_events_disable_retry_limit: + type: boolean + put_log_events_retry_limit: + type: integer + put_log_events_retry_wait: + type: string + region: + type: string + remove_log_group_aws_tags_key: + type: string + remove_log_group_name_key: + type: string + remove_log_stream_name_key: + type: string + remove_retention_in_days: + type: string + retention_in_days: + type: string + retention_in_days_key: + type: string + slow_flush_log_threshold: + type: string + use_tag_as_group: + type: boolean + use_tag_as_stream: + type: boolean + required: + - region + type: object + datadog: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compression_level: + type: string + dd_hostname: + type: string + dd_source: + type: string + dd_sourcecategory: + type: string + dd_tags: + type: string + host: + type: string + include_tag_key: + type: boolean + max_backoff: + type: string + max_retries: + type: string + no_ssl_validation: + type: boolean + port: + type: string + service: + type: string + slow_flush_log_threshold: + type: string + ssl_port: + type: string + tag_key: + type: string + timestamp_key: + type: string + use_compression: + type: boolean + use_http: + type: boolean + use_json: + type: boolean + use_ssl: + type: boolean + required: + - api_key + type: object + elasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + enabledNamespaces: + items: + type: string + type: array + file: + properties: + add_path_suffix: + type: boolean + append: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + path: + type: string + path_suffix: + type: string + recompress: + type: boolean + slow_flush_log_threshold: + type: string + symlink_path: + type: boolean + required: + - path + type: object + forward: + properties: + ack_response_timeout: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + connect_timeout: + type: integer + dns_round_robin: + type: boolean + expire_dns_cache: + type: integer + hard_timeout: + type: integer + heartbeat_interval: + type: integer + heartbeat_type: + type: string + ignore_network_errors_at_startup: + type: boolean + keepalive: + type: boolean + keepalive_timeout: + type: integer + phi_failure_detector: + type: boolean + phi_threshold: + type: integer + recover_wait: + type: integer + require_ack_response: + type: boolean + security: + properties: + allow_anonymous_source: + type: boolean + self_hostname: + type: string + shared_key: + type: string + user_auth: + type: boolean + required: + - self_hostname + - shared_key + type: object + send_timeout: + type: integer + servers: + items: + properties: + host: + type: string + name: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + shared_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + standby: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + weight: + type: integer + required: + - host + type: object + type: array + slow_flush_log_threshold: + type: string + tls_allow_self_signed_cert: + type: boolean + tls_cert_logical_store_name: + type: string + tls_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_cert_thumbprint: + type: string + tls_cert_use_enterprise_store: + type: boolean + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_insecure_mode: + type: boolean + tls_verify_hostname: + type: boolean + tls_version: + type: string + transport: + type: string + verify_connection_at_startup: + type: boolean + required: + - servers + type: object + gcs: + properties: + acl: + type: string + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_retries: + type: integer + client_timeout: + type: integer + credentials_json: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + encryption_key: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + keyfile: + type: string + object_key_format: + type: string + object_metadata: + items: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + overwrite: + type: boolean + path: + type: string + project: + type: string + slow_flush_log_threshold: + type: string + storage_class: + type: string + store_as: + type: string + transcoding: + type: boolean + required: + - bucket + - project + type: object + gelf: + properties: + host: + type: string + port: + type: integer + protocol: + type: string + tls: + type: boolean + tls_options: + additionalProperties: + type: string + type: object + required: + - host + - port + type: object + http: + properties: + auth: + properties: + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - password + - username + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + content_type: + type: string + endpoint: + type: string + error_response_as_unrecoverable: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + headers: + additionalProperties: + type: string + type: object + http_method: + type: string + json_array: + type: boolean + open_timeout: + type: integer + proxy: + type: string + read_timeout: + type: integer + retryable_response_codes: + items: + type: integer + type: array + slow_flush_log_threshold: + type: string + ssl_timeout: + type: integer + tls_ca_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_verify_mode: + type: string + tls_version: + type: string + required: + - endpoint + type: object + kafka: + properties: + ack_timeout: + type: integer + brokers: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_id: + type: string + compression_codec: + type: string + default_message_key: + type: string + default_partition_key: + type: string + default_topic: + type: string + discard_kafka_delivery_failed: + type: boolean + exclude_partion_key: + type: boolean + exclude_topic_key: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + get_kafka_client_log: + type: boolean + headers: + additionalProperties: + type: string + type: object + headers_from_record: + additionalProperties: + type: string + type: object + idempotent: + type: boolean + kafka_agg_max_bytes: + type: integer + kafka_agg_max_messages: + type: integer + keytab: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + max_send_retries: + type: integer + message_key_key: + type: string + partition_key: + type: string + partition_key_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + principal: + type: string + required_acks: + type: integer + sasl_over_ssl: + type: boolean + scram_mechanism: + type: string + slow_flush_log_threshold: + type: string + ssl_ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_ca_certs_from_system: + type: boolean + ssl_client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_chain: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_verify_hostname: + type: boolean + topic_key: + type: string + use_default_for_unknown_topic: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - brokers + - format + type: object + kinesisStream: + properties: + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + aws_iam_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_ses_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + batch_request_max_count: + type: integer + batch_request_max_size: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + partition_key: + type: string + process_credentials: + properties: + process: + type: string + required: + - process + type: object + region: + type: string + reset_backoff_if_success: + type: boolean + retries_on_batch_request: + type: integer + slow_flush_log_threshold: + type: string + stream_name: + type: string + required: + - stream_name + type: object + logdna: + properties: + api_key: + type: string + app: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + hostname: + type: string + ingester_domain: + type: string + ingester_endpoint: + type: string + request_timeout: + type: string + slow_flush_log_threshold: + type: string + tags: + type: string + required: + - api_key + - hostname + type: object + loggingRef: + type: string + logz: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_limit: + type: integer + bulk_limit_warning_limit: + type: integer + endpoint: + properties: + port: + type: integer + token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + gzip: + type: boolean + http_idle_timeout: + type: integer + output_include_tags: + type: boolean + output_include_time: + type: boolean + retry_count: + type: integer + retry_sleep: + type: integer + slow_flush_log_threshold: + type: string + required: + - endpoint + type: object + loki: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + configure_kubernetes_labels: + type: boolean + drop_single_key: + type: boolean + extra_labels: + additionalProperties: + type: string + type: object + extract_kubernetes_labels: + type: boolean + insecure_tls: + type: boolean + key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + labels: + additionalProperties: + type: string + type: object + line_format: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + remove_keys: + items: + type: string + type: array + slow_flush_log_threshold: + type: string + tenant: + type: string + url: + type: string + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + newrelic: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + base_uri: + type: string + license_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + nullout: + type: object + opensearch: + properties: + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + catch_transport_exception_on_retry: + type: boolean + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + compression_level: + type: string + custom_headers: + type: string + customize_template: + type: string + default_opensearch_version: + type: integer + emit_error_for_missing_id: + type: boolean + emit_error_label_event: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_os_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + http_backend_excon_nonblock: + type: boolean + id_key: + type: string + ignore_exceptions: + type: string + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_separator: + type: string + log_os_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_os_version: + type: integer + max_retry_putting_template: + type: string + parent_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + routing_key: + type: string + scheme: + type: string + selector_class_name: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_verify: + type: boolean + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_affinity: + type: boolean + target_index_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_exclude_timestamp: + type: boolean + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + truncate_caches_interval: + type: string + unrecoverable_error_types: + type: string + unrecoverable_record_types: + type: string + use_legacy_template: + type: boolean + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_os_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + oss: + properties: + aaccess_key_secret: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_bucket: + type: boolean + check_object: + type: boolean + download_crc_enable: + type: boolean + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + index_format: + type: string + key_format: + type: string + open_timeout: + type: integer + oss_sdk_log_dir: + type: string + overwrite: + type: boolean + path: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + store_as: + type: string + upload_crc_enable: + type: boolean + warn_for_delay: + type: string + required: + - aaccess_key_secret + - access_key_id + - bucket + - endpoint + type: object + redis: + properties: + allow_duplicate_key: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + db_number: + type: integer + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + insert_key_prefix: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + slow_flush_log_threshold: + type: string + strftime_format: + type: string + ttl: + type: integer + type: object + s3: + properties: + acl: + type: string + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + auto_create_bucket: + type: string + aws_iam_retries: + type: string + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_apikey_on_start: + type: string + check_bucket: + type: string + check_object: + type: string + clustername: + type: string + compress: + properties: + parquet_compression_codec: + type: string + parquet_page_size: + type: string + parquet_row_group_size: + type: string + record_type: + type: string + schema_file: + type: string + schema_type: + type: string + type: object + compute_checksums: + type: string + enable_transfer_acceleration: + type: string + force_path_style: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + grant_full_control: + type: string + grant_read: + type: string + grant_read_acp: + type: string + grant_write_acp: + type: string + hex_random_length: + type: string + index_format: + type: string + instance_profile_credentials: + properties: + http_open_timeout: + type: string + http_read_timeout: + type: string + ip_address: + type: string + port: + type: string + retries: + type: string + type: object + oneeye_format: + type: boolean + overwrite: + type: string + path: + type: string + proxy_uri: + type: string + s3_bucket: + type: string + s3_endpoint: + type: string + s3_metadata: + type: string + s3_object_key_format: + type: string + s3_region: + type: string + shared_credentials: + properties: + path: + type: string + profile_name: + type: string + type: object + signature_version: + type: string + slow_flush_log_threshold: + type: string + sse_customer_algorithm: + type: string + sse_customer_key: + type: string + sse_customer_key_md5: + type: string + ssekms_key_id: + type: string + ssl_verify_peer: + type: string + storage_class: + type: string + store_as: + type: string + use_bundled_cert: + type: string + use_server_side_encryption: + type: string + warn_for_delay: + type: string + required: + - s3_bucket + type: object + splunkHec: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + coerce_to_utf8: + type: boolean + data_type: + type: string + fields: + additionalProperties: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hec_host: + type: string + hec_port: + type: integer + hec_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + host: + type: string + host_key: + type: string + idle_timeout: + type: integer + index: + type: string + index_key: + type: string + insecure_ssl: + type: boolean + keep_keys: + type: boolean + metric_name_key: + type: string + metric_value_key: + type: string + metrics_from_event: + type: boolean + non_utf8_replacement_string: + type: string + open_timeout: + type: integer + protocol: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + source: + type: string + source_key: + type: string + sourcetype: + type: string + sourcetype_key: + type: string + ssl_ciphers: + type: string + required: + - hec_host + - hec_token + type: object + sqs: + properties: + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + create_queue: + type: boolean + delay_seconds: + type: integer + include_tag: + type: boolean + message_group_id: + type: string + queue_name: + type: string + region: + type: string + slow_flush_log_threshold: + type: string + sqs_url: + type: string + tag_property_name: + type: string + type: object + sumologic: + properties: + add_timestamp: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: boolean + compress_encoding: + type: string + custom_dimensions: + type: string + custom_fields: + items: + type: string + type: array + data_type: + type: string + delimiter: + type: string + disable_cookies: + type: boolean + endpoint: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + log_format: + type: string + log_key: + type: string + metric_data_format: + type: string + open_timeout: + type: integer + proxy_uri: + type: string + slow_flush_log_threshold: + type: string + source_category: + type: string + source_host: + type: string + source_name: + type: string + source_name_key: + type: string + sumo_client: + type: string + timestamp_key: + type: string + verify_ssl: + type: boolean + required: + - endpoint + - source_name + type: object + syslog: + properties: + allow_self_signed_cert: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + enable_system_cert_store: + type: boolean + format: + properties: + app_name_field: + type: string + hostname_field: + type: string + log_field: + type: string + message_id_field: + type: string + proc_id_field: + type: string + rfc6587_message_size: + type: boolean + structured_data_field: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + fqdn: + type: string + host: + type: string + insecure: + type: boolean + port: + type: integer + private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + slow_flush_log_threshold: + type: string + transport: + type: string + trusted_ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + verify_fqdn: + type: boolean + version: + type: string + required: + - host + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + required: + - spec + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Is the output active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + awsElasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + endpoint: + properties: + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_arn: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_session_name: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_web_identity_token_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ecs_container_credentials_relative_uri: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + region: + type: string + secret_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + sts_credentials_region: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + flush_interval: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + azurestorage: + properties: + auto_create_container: + type: boolean + azure_container: + type: string + azure_imds_api_version: + type: string + azure_object_key_format: + type: string + azure_storage_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_account: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_sas_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + type: string + path: + type: string + slow_flush_log_threshold: + type: string + required: + - azure_container + - azure_storage_account + type: object + cloudwatch: + properties: + auto_create_stream: + type: boolean + aws_instance_profile_credentials_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sts_role_arn: + type: string + aws_sts_session_name: + type: string + aws_use_sts: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + concurrency: + type: integer + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + http_proxy: + type: string + include_time_key: + type: boolean + json_handler: + type: string + localtime: + type: boolean + log_group_aws_tags: + type: string + log_group_aws_tags_key: + type: string + log_group_name: + type: string + log_group_name_key: + type: string + log_rejected_request: + type: string + log_stream_name: + type: string + log_stream_name_key: + type: string + max_events_per_batch: + type: integer + max_message_length: + type: integer + message_keys: + type: string + put_log_events_disable_retry_limit: + type: boolean + put_log_events_retry_limit: + type: integer + put_log_events_retry_wait: + type: string + region: + type: string + remove_log_group_aws_tags_key: + type: string + remove_log_group_name_key: + type: string + remove_log_stream_name_key: + type: string + remove_retention_in_days: + type: string + retention_in_days: + type: string + retention_in_days_key: + type: string + slow_flush_log_threshold: + type: string + use_tag_as_group: + type: boolean + use_tag_as_stream: + type: boolean + required: + - region + type: object + datadog: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compression_level: + type: string + dd_hostname: + type: string + dd_source: + type: string + dd_sourcecategory: + type: string + dd_tags: + type: string + host: + type: string + include_tag_key: + type: boolean + max_backoff: + type: string + max_retries: + type: string + no_ssl_validation: + type: boolean + port: + type: string + service: + type: string + slow_flush_log_threshold: + type: string + ssl_port: + type: string + tag_key: + type: string + timestamp_key: + type: string + use_compression: + type: boolean + use_http: + type: boolean + use_json: + type: boolean + use_ssl: + type: boolean + required: + - api_key + type: object + elasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + enabledNamespaces: + items: + type: string + type: array + file: + properties: + add_path_suffix: + type: boolean + append: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + path: + type: string + path_suffix: + type: string + recompress: + type: boolean + slow_flush_log_threshold: + type: string + symlink_path: + type: boolean + required: + - path + type: object + forward: + properties: + ack_response_timeout: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + connect_timeout: + type: integer + dns_round_robin: + type: boolean + expire_dns_cache: + type: integer + hard_timeout: + type: integer + heartbeat_interval: + type: integer + heartbeat_type: + type: string + ignore_network_errors_at_startup: + type: boolean + keepalive: + type: boolean + keepalive_timeout: + type: integer + phi_failure_detector: + type: boolean + phi_threshold: + type: integer + recover_wait: + type: integer + require_ack_response: + type: boolean + security: + properties: + allow_anonymous_source: + type: boolean + self_hostname: + type: string + shared_key: + type: string + user_auth: + type: boolean + required: + - self_hostname + - shared_key + type: object + send_timeout: + type: integer + servers: + items: + properties: + host: + type: string + name: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + shared_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + standby: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + weight: + type: integer + required: + - host + type: object + type: array + slow_flush_log_threshold: + type: string + tls_allow_self_signed_cert: + type: boolean + tls_cert_logical_store_name: + type: string + tls_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_cert_thumbprint: + type: string + tls_cert_use_enterprise_store: + type: boolean + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_insecure_mode: + type: boolean + tls_verify_hostname: + type: boolean + tls_version: + type: string + transport: + type: string + verify_connection_at_startup: + type: boolean + required: + - servers + type: object + gcs: + properties: + acl: + type: string + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_retries: + type: integer + client_timeout: + type: integer + credentials_json: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + encryption_key: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + keyfile: + type: string + object_key_format: + type: string + object_metadata: + items: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + overwrite: + type: boolean + path: + type: string + project: + type: string + slow_flush_log_threshold: + type: string + storage_class: + type: string + store_as: + type: string + transcoding: + type: boolean + required: + - bucket + - project + type: object + gelf: + properties: + host: + type: string + port: + type: integer + protocol: + type: string + tls: + type: boolean + tls_options: + additionalProperties: + type: string + type: object + required: + - host + - port + type: object + http: + properties: + auth: + properties: + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - password + - username + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + content_type: + type: string + endpoint: + type: string + error_response_as_unrecoverable: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + headers: + additionalProperties: + type: string + type: object + http_method: + type: string + json_array: + type: boolean + open_timeout: + type: integer + proxy: + type: string + read_timeout: + type: integer + retryable_response_codes: + items: + type: integer + type: array + slow_flush_log_threshold: + type: string + ssl_timeout: + type: integer + tls_ca_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_verify_mode: + type: string + tls_version: + type: string + required: + - endpoint + type: object + kafka: + properties: + ack_timeout: + type: integer + brokers: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_id: + type: string + compression_codec: + type: string + default_message_key: + type: string + default_partition_key: + type: string + default_topic: + type: string + discard_kafka_delivery_failed: + type: boolean + exclude_partion_key: + type: boolean + exclude_topic_key: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + get_kafka_client_log: + type: boolean + headers: + additionalProperties: + type: string + type: object + headers_from_record: + additionalProperties: + type: string + type: object + idempotent: + type: boolean + kafka_agg_max_bytes: + type: integer + kafka_agg_max_messages: + type: integer + keytab: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + max_send_retries: + type: integer + message_key_key: + type: string + partition_key: + type: string + partition_key_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + principal: + type: string + required_acks: + type: integer + sasl_over_ssl: + type: boolean + scram_mechanism: + type: string + slow_flush_log_threshold: + type: string + ssl_ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_ca_certs_from_system: + type: boolean + ssl_client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_chain: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_verify_hostname: + type: boolean + topic_key: + type: string + use_default_for_unknown_topic: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - brokers + - format + type: object + kinesisStream: + properties: + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + aws_iam_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_ses_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + batch_request_max_count: + type: integer + batch_request_max_size: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + partition_key: + type: string + process_credentials: + properties: + process: + type: string + required: + - process + type: object + region: + type: string + reset_backoff_if_success: + type: boolean + retries_on_batch_request: + type: integer + slow_flush_log_threshold: + type: string + stream_name: + type: string + required: + - stream_name + type: object + logdna: + properties: + api_key: + type: string + app: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + hostname: + type: string + ingester_domain: + type: string + ingester_endpoint: + type: string + request_timeout: + type: string + slow_flush_log_threshold: + type: string + tags: + type: string + required: + - api_key + - hostname + type: object + loggingRef: + type: string + logz: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_limit: + type: integer + bulk_limit_warning_limit: + type: integer + endpoint: + properties: + port: + type: integer + token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + gzip: + type: boolean + http_idle_timeout: + type: integer + output_include_tags: + type: boolean + output_include_time: + type: boolean + retry_count: + type: integer + retry_sleep: + type: integer + slow_flush_log_threshold: + type: string + required: + - endpoint + type: object + loki: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + configure_kubernetes_labels: + type: boolean + drop_single_key: + type: boolean + extra_labels: + additionalProperties: + type: string + type: object + extract_kubernetes_labels: + type: boolean + insecure_tls: + type: boolean + key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + labels: + additionalProperties: + type: string + type: object + line_format: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + remove_keys: + items: + type: string + type: array + slow_flush_log_threshold: + type: string + tenant: + type: string + url: + type: string + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + newrelic: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + base_uri: + type: string + license_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + nullout: + type: object + opensearch: + properties: + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + catch_transport_exception_on_retry: + type: boolean + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + compression_level: + type: string + custom_headers: + type: string + customize_template: + type: string + default_opensearch_version: + type: integer + emit_error_for_missing_id: + type: boolean + emit_error_label_event: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_os_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + http_backend_excon_nonblock: + type: boolean + id_key: + type: string + ignore_exceptions: + type: string + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_separator: + type: string + log_os_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_os_version: + type: integer + max_retry_putting_template: + type: string + parent_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + routing_key: + type: string + scheme: + type: string + selector_class_name: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_verify: + type: boolean + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_affinity: + type: boolean + target_index_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_exclude_timestamp: + type: boolean + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + truncate_caches_interval: + type: string + unrecoverable_error_types: + type: string + unrecoverable_record_types: + type: string + use_legacy_template: + type: boolean + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_os_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + oss: + properties: + aaccess_key_secret: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_bucket: + type: boolean + check_object: + type: boolean + download_crc_enable: + type: boolean + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + index_format: + type: string + key_format: + type: string + open_timeout: + type: integer + oss_sdk_log_dir: + type: string + overwrite: + type: boolean + path: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + store_as: + type: string + upload_crc_enable: + type: boolean + warn_for_delay: + type: string + required: + - aaccess_key_secret + - access_key_id + - bucket + - endpoint + type: object + redis: + properties: + allow_duplicate_key: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + db_number: + type: integer + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + insert_key_prefix: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + slow_flush_log_threshold: + type: string + strftime_format: + type: string + ttl: + type: integer + type: object + s3: + properties: + acl: + type: string + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + auto_create_bucket: + type: string + aws_iam_retries: + type: string + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_apikey_on_start: + type: string + check_bucket: + type: string + check_object: + type: string + clustername: + type: string + compress: + properties: + parquet_compression_codec: + type: string + parquet_page_size: + type: string + parquet_row_group_size: + type: string + record_type: + type: string + schema_file: + type: string + schema_type: + type: string + type: object + compute_checksums: + type: string + enable_transfer_acceleration: + type: string + force_path_style: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + grant_full_control: + type: string + grant_read: + type: string + grant_read_acp: + type: string + grant_write_acp: + type: string + hex_random_length: + type: string + index_format: + type: string + instance_profile_credentials: + properties: + http_open_timeout: + type: string + http_read_timeout: + type: string + ip_address: + type: string + port: + type: string + retries: + type: string + type: object + oneeye_format: + type: boolean + overwrite: + type: string + path: + type: string + proxy_uri: + type: string + s3_bucket: + type: string + s3_endpoint: + type: string + s3_metadata: + type: string + s3_object_key_format: + type: string + s3_region: + type: string + shared_credentials: + properties: + path: + type: string + profile_name: + type: string + type: object + signature_version: + type: string + slow_flush_log_threshold: + type: string + sse_customer_algorithm: + type: string + sse_customer_key: + type: string + sse_customer_key_md5: + type: string + ssekms_key_id: + type: string + ssl_verify_peer: + type: string + storage_class: + type: string + store_as: + type: string + use_bundled_cert: + type: string + use_server_side_encryption: + type: string + warn_for_delay: + type: string + required: + - s3_bucket + type: object + splunkHec: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + coerce_to_utf8: + type: boolean + data_type: + type: string + fields: + additionalProperties: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hec_host: + type: string + hec_port: + type: integer + hec_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + host: + type: string + host_key: + type: string + idle_timeout: + type: integer + index: + type: string + index_key: + type: string + insecure_ssl: + type: boolean + keep_keys: + type: boolean + metric_name_key: + type: string + metric_value_key: + type: string + metrics_from_event: + type: boolean + non_utf8_replacement_string: + type: string + open_timeout: + type: integer + protocol: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + source: + type: string + source_key: + type: string + sourcetype: + type: string + sourcetype_key: + type: string + ssl_ciphers: + type: string + required: + - hec_host + - hec_token + type: object + sqs: + properties: + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + create_queue: + type: boolean + delay_seconds: + type: integer + include_tag: + type: boolean + message_group_id: + type: string + queue_name: + type: string + region: + type: string + slow_flush_log_threshold: + type: string + sqs_url: + type: string + tag_property_name: + type: string + type: object + sumologic: + properties: + add_timestamp: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: boolean + compress_encoding: + type: string + custom_dimensions: + type: string + custom_fields: + items: + type: string + type: array + data_type: + type: string + delimiter: + type: string + disable_cookies: + type: boolean + endpoint: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + log_format: + type: string + log_key: + type: string + metric_data_format: + type: string + open_timeout: + type: integer + proxy_uri: + type: string + slow_flush_log_threshold: + type: string + source_category: + type: string + source_host: + type: string + source_name: + type: string + source_name_key: + type: string + sumo_client: + type: string + timestamp_key: + type: string + verify_ssl: + type: boolean + required: + - endpoint + - source_name + type: object + syslog: + properties: + allow_self_signed_cert: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + enable_system_cert_store: + type: boolean + format: + properties: + app_name_field: + type: string + hostname_field: + type: string + log_field: + type: string + message_id_field: + type: string + proc_id_field: + type: string + rfc6587_message_size: + type: boolean + structured_data_field: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + fqdn: + type: string + host: + type: string + insecure: + type: boolean + port: + type: integer + private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + slow_flush_log_threshold: + type: string + transport: + type: string + trusted_ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + verify_fqdn: + type: boolean + version: + type: string + required: + - host + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_flows.yaml new file mode 100644 index 0000000000..28be9134d8 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_flows.yaml @@ -0,0 +1,2048 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: flows.logging.banzaicloud.io +spec: + group: logging.banzaicloud.io + names: + categories: + - logging-all + kind: Flow + listKind: FlowList + plural: flows + singular: flow + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Is the flow active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + filters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + globalOutputRefs: + items: + type: string + type: array + localOutputRefs: + items: + type: string + type: array + loggingRef: + type: string + match: + items: + properties: + exclude: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + type: object + select: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + type: object + type: object + type: array + outputRefs: + items: + type: string + type: array + selectors: + additionalProperties: + type: string + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Is the flow active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + filters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + globalOutputRefs: + items: + type: string + type: array + localOutputRefs: + items: + type: string + type: array + loggingRef: + type: string + match: + items: + properties: + exclude: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + type: object + select: + properties: + container_names: + items: + type: string + type: array + hosts: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + type: object + type: object + type: array + outputRefs: + items: + type: string + type: array + selectors: + additionalProperties: + type: string + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml new file mode 100644 index 0000000000..f85b1799cd --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml @@ -0,0 +1,9771 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: loggings.logging.banzaicloud.io +spec: + group: logging.banzaicloud.io + names: + categories: + - logging-all + kind: Logging + listKind: LoggingList + plural: loggings + singular: logging + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + type: object + status: + type: object + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + allowClusterResourcesFromAllNamespaces: + type: boolean + clusterDomain: + type: string + controlNamespace: + type: string + defaultFlow: + properties: + filters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + globalOutputRefs: + items: + type: string + type: array + outputRefs: + items: + type: string + type: array + type: object + enableRecreateWorkloadOnImmutableFieldChange: + type: boolean + errorOutputRef: + type: string + flowConfigCheckDisabled: + type: boolean + flowConfigOverride: + type: string + fluentbit: + properties: + HostNetwork: + type: boolean + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + annotations: + additionalProperties: + type: string + type: object + bufferStorage: + properties: + storage.backlog.mem_limit: + type: string + storage.checksum: + type: string + storage.path: + type: string + storage.sync: + type: string + type: object + bufferStorageVolume: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + bufferVolumeArgs: + items: + type: string + type: array + bufferVolumeImage: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + bufferVolumeMetrics: + properties: + interval: + type: string + path: + type: string + port: + format: int32 + type: integer + prometheusAnnotations: + type: boolean + prometheusRules: + type: boolean + serviceMonitor: + type: boolean + serviceMonitorConfig: + properties: + additionalLabels: + additionalProperties: + type: string + type: object + honorLabels: + type: boolean + metricRelabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + relabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + scheme: + type: string + tlsConfig: + properties: + ca: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + caFile: + type: string + cert: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + certFile: + type: string + insecureSkipVerify: + type: boolean + keyFile: + type: string + keySecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + serverName: + type: string + type: object + type: object + timeout: + type: string + type: object + coroStackSize: + format: int32 + type: integer + customConfigSecret: + type: string + daemonsetAnnotations: + additionalProperties: + type: string + type: object + disableKubernetesFilter: + type: boolean + 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 + enableUpstream: + type: boolean + envVars: + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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 + extraVolumeMounts: + items: + properties: + destination: + pattern: ^/.+$ + type: string + readOnly: + type: boolean + source: + pattern: ^/.+$ + type: string + required: + - destination + - source + type: object + type: array + filterAws: + properties: + Match: + type: string + account_id: + type: boolean + ami_id: + type: boolean + az: + type: boolean + ec2_instance_id: + type: boolean + ec2_instance_type: + type: boolean + hostname: + type: boolean + imds_version: + type: string + private_ip: + type: boolean + vpc_id: + type: boolean + type: object + filterKubernetes: + properties: + Annotations: + type: string + Buffer_Size: + type: string + Cache_Use_Docker_Id: + type: string + DNS_Retries: + type: string + DNS_Wait_Time: + type: string + Dummy_Meta: + type: string + K8S-Logging.Exclude: + type: string + K8S-Logging.Parser: + type: string + Keep_Log: + type: string + Kube_CA_File: + type: string + Kube_CA_Path: + type: string + Kube_Tag_Prefix: + type: string + Kube_Token_File: + type: string + Kube_URL: + type: string + Kube_meta_preload_cache_dir: + type: string + Kubelet_Port: + type: string + Labels: + type: string + Match: + type: string + Merge_Log: + type: string + Merge_Log_Key: + type: string + Merge_Log_Trim: + type: string + Merge_Parser: + type: string + Regex_Parser: + type: string + Use_Journal: + type: string + Use_Kubelet: + type: string + tls.debug: + type: string + tls.verify: + type: string + type: object + filterModify: + items: + properties: + conditions: + items: + properties: + A_key_matches: + properties: + key: + type: string + type: object + Key_does_not_exist: + properties: + key: + type: string + value: + type: string + type: object + Key_exists: + properties: + key: + type: string + type: object + Key_value_does_not_equal: + properties: + key: + type: string + value: + type: string + type: object + Key_value_does_not_match: + properties: + key: + type: string + value: + type: string + type: object + Key_value_equals: + properties: + key: + type: string + value: + type: string + type: object + Key_value_matches: + properties: + key: + type: string + value: + type: string + type: object + Matching_keys_do_not_have_matching_values: + properties: + key: + type: string + value: + type: string + type: object + Matching_keys_have_matching_values: + properties: + key: + type: string + value: + type: string + type: object + No_key_matches: + properties: + key: + type: string + type: object + type: object + type: array + rules: + items: + properties: + Add: + properties: + key: + type: string + value: + type: string + type: object + Copy: + properties: + key: + type: string + value: + type: string + type: object + Hard_copy: + properties: + key: + type: string + value: + type: string + type: object + Hard_rename: + properties: + key: + type: string + value: + type: string + type: object + Remove: + properties: + key: + type: string + type: object + Remove_regex: + properties: + key: + type: string + type: object + Remove_wildcard: + properties: + key: + type: string + type: object + Rename: + properties: + key: + type: string + value: + type: string + type: object + Set: + properties: + key: + type: string + value: + type: string + type: object + type: object + type: array + type: object + type: array + flush: + format: int32 + type: integer + forwardOptions: + properties: + Require_ack_response: + type: boolean + Retry_Limit: + type: string + Send_options: + type: boolean + Tag: + type: string + Time_as_Integer: + type: boolean + storage.total_limit_size: + type: string + type: object + grace: + format: int32 + type: integer + image: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + inputTail: + properties: + Buffer_Chunk_Size: + type: string + Buffer_Max_Size: + type: string + DB: + type: string + DB.journal_mode: + type: string + DB.locking: + type: boolean + DB_Sync: + type: string + Docker_Mode: + type: string + Docker_Mode_Flush: + type: string + Docker_Mode_Parser: + type: string + Exclude_Path: + type: string + Ignore_Older: + type: string + Key: + type: string + Mem_Buf_Limit: + type: string + Multiline: + type: string + Multiline_Flush: + type: string + Parser: + type: string + Parser_Firstline: + type: string + Parser_N: + items: + type: string + type: array + Path: + type: string + Path_Key: + type: string + Read_From_Head: + type: boolean + Refresh_Interval: + type: string + Rotate_Wait: + type: string + Skip_Long_Lines: + type: string + Tag: + type: string + Tag_Regex: + type: string + multiline.parser: + items: + type: string + type: array + storage.type: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + livenessDefaultCheck: + type: boolean + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + logLevel: + type: string + metrics: + properties: + interval: + type: string + path: + type: string + port: + format: int32 + type: integer + prometheusAnnotations: + type: boolean + prometheusRules: + type: boolean + serviceMonitor: + type: boolean + serviceMonitorConfig: + properties: + additionalLabels: + additionalProperties: + type: string + type: object + honorLabels: + type: boolean + metricRelabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + relabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + scheme: + type: string + tlsConfig: + properties: + ca: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + caFile: + type: string + cert: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + certFile: + type: string + insecureSkipVerify: + type: boolean + keyFile: + type: string + keySecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + serverName: + type: string + type: object + type: object + timeout: + type: string + type: object + mountPath: + type: string + network: + properties: + connectTimeout: + format: int32 + type: integer + connectTimeoutLogError: + type: boolean + dnsMode: + type: string + dnsPreferIpv4: + type: boolean + dnsResolver: + type: string + keepalive: + type: boolean + keepaliveIdleTimeout: + format: int32 + type: integer + keepaliveMaxRecycle: + format: int32 + type: integer + sourceAddress: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + parser: + type: string + podPriorityClassName: + type: string + position_db: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + positiondb: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + security: + properties: + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + podSecurityPolicyCreate: + type: boolean + roleBasedAccessControlCreate: + type: boolean + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + type: object + serviceAccount: + properties: + automountServiceAccountToken: + type: boolean + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + secrets: + items: + properties: + apiVersion: + type: string + fieldPath: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + resourceVersion: + type: string + uid: + type: string + type: object + type: array + type: object + targetHost: + type: string + targetPort: + format: int32 + type: integer + tls: + properties: + enabled: + type: boolean + secretName: + type: string + sharedKey: + type: string + required: + - enabled + type: object + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + updateStrategy: + properties: + rollingUpdate: + properties: + maxSurge: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + type: + type: string + type: object + type: object + fluentd: + properties: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + annotations: + additionalProperties: + type: string + type: object + bufferStorageVolume: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + bufferVolumeArgs: + items: + type: string + type: array + bufferVolumeImage: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + bufferVolumeMetrics: + properties: + interval: + type: string + path: + type: string + port: + format: int32 + type: integer + prometheusAnnotations: + type: boolean + prometheusRules: + type: boolean + serviceMonitor: + type: boolean + serviceMonitorConfig: + properties: + additionalLabels: + additionalProperties: + type: string + type: object + honorLabels: + type: boolean + metricRelabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + relabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + scheme: + type: string + tlsConfig: + properties: + ca: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + caFile: + type: string + cert: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + certFile: + type: string + insecureSkipVerify: + type: boolean + keyFile: + type: string + keySecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + serverName: + type: string + type: object + type: object + timeout: + type: string + type: object + compressConfigFile: + type: boolean + configCheckAnnotations: + additionalProperties: + type: string + type: object + configCheckResources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + configReloaderImage: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + configReloaderResources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + disablePvc: + type: boolean + 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 + enableMsgpackTimeSupport: + type: boolean + envVars: + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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 + extraArgs: + items: + type: string + type: array + extraVolumes: + items: + properties: + containerName: + type: string + path: + type: string + volume: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + volumeName: + type: string + type: object + type: array + fluentLogDestination: + type: string + fluentOutLogrotate: + properties: + age: + type: string + enabled: + type: boolean + path: + type: string + size: + type: string + required: + - enabled + type: object + fluentdPvcSpec: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + forwardInputConfig: + properties: + add_tag_prefix: + type: string + bind: + type: string + chunk_size_limit: + type: string + chunk_size_warn_limit: + type: string + deny_keepalive: + type: boolean + linger_timeout: + type: integer + port: + type: string + resolve_hostname: + type: boolean + security: + properties: + allow_anonymous_source: + type: boolean + self_hostname: + type: string + shared_key: + type: string + user_auth: + type: boolean + required: + - self_hostname + - shared_key + type: object + send_keepalive_packet: + type: boolean + skip_invalid_event: + type: boolean + source_address_key: + type: string + sourceHostnameKey: + type: string + tag: + type: string + transport: + properties: + ca_cert_path: + type: string + ca_path: + type: string + ca_private_key_passphrase: + type: string + ca_private_key_path: + type: string + cert_path: + type: string + ciphers: + type: string + client_cert_auth: + type: boolean + insecure: + type: boolean + private_key_passphrase: + type: string + private_key_path: + type: string + protocol: + type: string + version: + type: string + type: object + type: object + ignoreRepeatedLogInterval: + type: string + ignoreSameLogInterval: + type: string + image: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + livenessDefaultCheck: + type: boolean + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + logLevel: + type: string + metrics: + properties: + interval: + type: string + path: + type: string + port: + format: int32 + type: integer + prometheusAnnotations: + type: boolean + prometheusRules: + type: boolean + serviceMonitor: + type: boolean + serviceMonitorConfig: + properties: + additionalLabels: + additionalProperties: + type: string + type: object + honorLabels: + type: boolean + metricRelabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + relabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + scheme: + type: string + tlsConfig: + properties: + ca: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + caFile: + type: string + cert: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + certFile: + type: string + insecureSkipVerify: + type: boolean + keyFile: + type: string + keySecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + serverName: + type: string + type: object + type: object + timeout: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + podPriorityClassName: + type: string + port: + format: int32 + type: integer + readinessDefaultCheck: + properties: + bufferFileNumber: + type: boolean + bufferFileNumberMax: + format: int32 + type: integer + bufferFreeSpace: + type: boolean + bufferFreeSpaceThreshold: + format: int32 + type: integer + failureThreshold: + format: int32 + type: integer + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + rootDir: + type: string + scaling: + properties: + drain: + properties: + annotations: + additionalProperties: + type: string + type: object + deleteVolume: + type: boolean + enabled: + type: boolean + image: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + pauseImage: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + type: object + podManagementPolicy: + type: string + replicas: + type: integer + type: object + security: + properties: + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + podSecurityPolicyCreate: + type: boolean + roleBasedAccessControlCreate: + type: boolean + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + type: object + serviceAccount: + properties: + automountServiceAccountToken: + type: boolean + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + secrets: + items: + properties: + apiVersion: + type: string + fieldPath: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + resourceVersion: + type: string + uid: + type: string + type: object + type: array + type: object + statefulsetAnnotations: + additionalProperties: + type: string + type: object + tls: + properties: + enabled: + type: boolean + secretName: + type: string + sharedKey: + type: string + required: + - enabled + type: object + 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 + volumeModImage: + properties: + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + pullPolicy: + type: string + repository: + type: string + tag: + type: string + type: object + volumeMountChmod: + type: boolean + workers: + format: int32 + type: integer + type: object + globalFilters: + items: + properties: + concat: + properties: + continuous_line_regexp: + type: string + flush_interval: + type: integer + keep_partial_key: + type: boolean + keep_partial_metadata: + type: string + key: + type: string + multiline_end_regexp: + type: string + multiline_start_regexp: + type: string + n_lines: + type: integer + partial_key: + type: string + partial_value: + type: string + separator: + type: string + stream_identity_key: + type: string + timeout_label: + type: string + use_first_timestamp: + type: boolean + use_partial_metadata: + type: string + type: object + dedot: + properties: + de_dot_nested: + type: boolean + de_dot_separator: + type: string + type: object + detectExceptions: + properties: + force_line_breaks: + type: boolean + languages: + items: + type: string + type: array + match_tag: + type: string + max_bytes: + type: integer + max_lines: + type: integer + message: + type: string + multiline_flush_interval: + type: string + remove_tag_prefix: + type: string + stream: + type: string + type: object + elasticsearch_genid: + properties: + hash_id_key: + type: string + hash_type: + type: string + include_tag_in_seed: + type: boolean + include_time_in_seed: + type: boolean + record_keys: + type: string + separator: + type: string + use_entire_record: + type: boolean + use_record_as_seed: + type: boolean + type: object + enhanceK8s: + properties: + api_groups: + items: + type: string + type: array + bearer_token_file: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cache_refresh: + type: integer + cache_refresh_variation: + type: integer + cache_size: + type: integer + cache_ttl: + type: integer + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + core_api_versions: + items: + type: string + type: array + data_type: + type: string + in_namespace_path: + items: + type: string + type: array + in_pod_path: + items: + type: string + type: array + kubernetes_url: + type: string + secret_dir: + type: string + ssl_partial_chain: + type: boolean + verify_ssl: + type: boolean + type: object + geoip: + properties: + backend_library: + type: string + geoip_2_database: + type: string + geoip_database: + type: string + geoip_lookup_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + skip_adding_null_record: + type: boolean + type: object + grep: + properties: + and: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + or: + items: + properties: + exclude: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + type: array + regexp: + items: + properties: + key: + type: string + pattern: + type: string + required: + - key + - pattern + type: object + type: array + type: object + kube_events_timestamp: + properties: + mapped_time_key: + type: string + timestamp_fields: + items: + type: string + type: array + type: object + parser: + properties: + emit_invalid_record_to_error: + type: boolean + hash_value_field: + type: string + inject_key_prefix: + type: string + key_name: + type: string + parse: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + parsers: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + delimiter: + type: string + delimiter_pattern: + type: string + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + format_firstline: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + keys: + type: string + label_delimiter: + type: string + local_time: + type: boolean + multiline: + items: + type: string + type: array + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + patterns: + items: + properties: + custom_pattern_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + estimate_current_event: + type: boolean + expression: + type: string + format: + type: string + grok_failure_key: + type: string + grok_name_key: + type: string + grok_pattern: + type: string + grok_patterns: + items: + properties: + keep_time_key: + type: boolean + name: + type: string + pattern: + type: string + time_format: + type: string + time_key: + type: string + timezone: + type: string + required: + - pattern + type: object + type: array + keep_time_key: + type: boolean + local_time: + type: boolean + multiline_start_regexp: + type: string + null_empty_string: + type: boolean + null_value_pattern: + type: string + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + time_format: + type: string + time_key: + type: string + time_type: + type: string + timezone: + type: string + type: + type: string + types: + type: string + utc: + type: boolean + type: object + type: array + remove_key_name_field: + type: boolean + replace_invalid_sequence: + type: boolean + reserve_data: + type: boolean + reserve_time: + type: boolean + type: object + prometheus: + properties: + labels: + additionalProperties: + type: string + type: object + metrics: + items: + properties: + buckets: + type: string + desc: + type: string + key: + type: string + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + required: + - desc + - name + - type + type: object + type: array + type: object + record_modifier: + properties: + char_encoding: + type: string + prepare_value: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + replaces: + items: + properties: + expression: + type: string + key: + type: string + replace: + type: string + required: + - expression + - key + - replace + type: object + type: array + whitelist_keys: + type: string + type: object + record_transformer: + properties: + auto_typecast: + type: boolean + enable_ruby: + type: boolean + keep_keys: + type: string + records: + items: + additionalProperties: + type: string + type: object + type: array + remove_keys: + type: string + renew_record: + type: boolean + renew_time_key: + type: string + type: object + stdout: + properties: + output_type: + type: string + type: object + sumologic: + properties: + collector_key_name: + type: string + collector_value: + type: string + exclude_container_regex: + type: string + exclude_facility_regex: + type: string + exclude_host_regex: + type: string + exclude_namespace_regex: + type: string + exclude_pod_regex: + type: string + exclude_priority_regex: + type: string + exclude_unit_regex: + type: string + log_format: + type: string + source_category: + type: string + source_category_key_name: + type: string + source_category_prefix: + type: string + source_category_replace_dash: + type: string + source_host: + type: string + source_host_key_name: + type: string + source_name: + type: string + source_name_key_name: + type: string + tracing_annotation_prefix: + type: string + tracing_container_name: + type: string + tracing_format: + type: boolean + tracing_host: + type: string + tracing_label_prefix: + type: string + tracing_namespace: + type: string + tracing_pod: + type: string + tracing_pod_id: + type: string + type: object + tag_normaliser: + properties: + format: + type: string + match_tag: + type: string + type: object + throttle: + properties: + group_bucket_limit: + type: integer + group_bucket_period_s: + type: integer + group_drop_logs: + type: boolean + group_key: + type: string + group_reset_rate_s: + type: integer + group_warning_delay_s: + type: integer + type: object + type: object + type: array + loggingRef: + type: string + nodeAgents: + items: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + name: + type: string + nodeAgentFluentbit: + properties: + bufferStorage: + properties: + storage.backlog.mem_limit: + type: string + storage.checksum: + type: string + storage.path: + type: string + storage.sync: + type: string + type: object + bufferStorageVolume: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + containersPath: + type: string + coroStackSize: + format: int32 + type: integer + customConfigSecret: + type: string + daemonSet: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + spec: + properties: + minReadySeconds: + format: int32 + type: integer + revisionHistoryLimit: + 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: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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 + namespaceSelector: + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + 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: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + 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 + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + 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: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + 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 + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + ephemeralContainers: + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + 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: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + 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 + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + 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: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + targetContainerName: + type: string + 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 + 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: + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + 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: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + 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 + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + 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: + default: TCP + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + required: + - port + 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: integer + - type: string + x-kubernetes-int-or-string: true + 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: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + 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: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + 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 + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + 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 + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + 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 + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + 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 + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + 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: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + 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 + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + 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 + type: object + type: object + updateStrategy: + properties: + rollingUpdate: + properties: + maxSurge: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + type: + type: string + type: object + type: object + type: object + disableKubernetesFilter: + type: boolean + enableUpstream: + type: boolean + enabled: + type: boolean + extraVolumeMounts: + items: + properties: + destination: + pattern: ^/.+$ + type: string + readOnly: + type: boolean + source: + pattern: ^/.+$ + type: string + required: + - destination + - source + type: object + type: array + filterAws: + properties: + Match: + type: string + account_id: + type: boolean + ami_id: + type: boolean + az: + type: boolean + ec2_instance_id: + type: boolean + ec2_instance_type: + type: boolean + hostname: + type: boolean + imds_version: + type: string + private_ip: + type: boolean + vpc_id: + type: boolean + type: object + filterKubernetes: + properties: + Annotations: + type: string + Buffer_Size: + type: string + Cache_Use_Docker_Id: + type: string + DNS_Retries: + type: string + DNS_Wait_Time: + type: string + Dummy_Meta: + type: string + K8S-Logging.Exclude: + type: string + K8S-Logging.Parser: + type: string + Keep_Log: + type: string + Kube_CA_File: + type: string + Kube_CA_Path: + type: string + Kube_Tag_Prefix: + type: string + Kube_Token_File: + type: string + Kube_URL: + type: string + Kube_meta_preload_cache_dir: + type: string + Kubelet_Port: + type: string + Labels: + type: string + Match: + type: string + Merge_Log: + type: string + Merge_Log_Key: + type: string + Merge_Log_Trim: + type: string + Merge_Parser: + type: string + Regex_Parser: + type: string + Use_Journal: + type: string + Use_Kubelet: + type: string + tls.debug: + type: string + tls.verify: + type: string + type: object + flush: + format: int32 + type: integer + forwardOptions: + properties: + Require_ack_response: + type: boolean + Retry_Limit: + type: string + Send_options: + type: boolean + Tag: + type: string + Time_as_Integer: + type: boolean + storage.total_limit_size: + type: string + type: object + grace: + format: int32 + type: integer + inputTail: + properties: + Buffer_Chunk_Size: + type: string + Buffer_Max_Size: + type: string + DB: + type: string + DB.journal_mode: + type: string + DB.locking: + type: boolean + DB_Sync: + type: string + Docker_Mode: + type: string + Docker_Mode_Flush: + type: string + Docker_Mode_Parser: + type: string + Exclude_Path: + type: string + Ignore_Older: + type: string + Key: + type: string + Mem_Buf_Limit: + type: string + Multiline: + type: string + Multiline_Flush: + type: string + Parser: + type: string + Parser_Firstline: + type: string + Parser_N: + items: + type: string + type: array + Path: + type: string + Path_Key: + type: string + Read_From_Head: + type: boolean + Refresh_Interval: + type: string + Rotate_Wait: + type: string + Skip_Long_Lines: + type: string + Tag: + type: string + Tag_Regex: + type: string + multiline.parser: + items: + type: string + type: array + storage.type: + type: string + type: object + livenessDefaultCheck: + type: boolean + logLevel: + type: string + metrics: + properties: + interval: + type: string + path: + type: string + port: + format: int32 + type: integer + prometheusAnnotations: + type: boolean + prometheusRules: + type: boolean + serviceMonitor: + type: boolean + serviceMonitorConfig: + properties: + additionalLabels: + additionalProperties: + type: string + type: object + honorLabels: + type: boolean + metricRelabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + relabelings: + items: + properties: + action: + type: string + modulus: + format: int64 + type: integer + regex: + type: string + replacement: + type: string + separator: + type: string + sourceLabels: + items: + type: string + type: array + targetLabel: + type: string + type: object + type: array + scheme: + type: string + tlsConfig: + properties: + ca: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + caFile: + type: string + cert: + properties: + configMap: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + secret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + certFile: + type: string + insecureSkipVerify: + type: boolean + keyFile: + type: string + keySecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + serverName: + type: string + type: object + type: object + timeout: + type: string + type: object + metricsService: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + spec: + properties: + allocateLoadBalancerNodePorts: + type: boolean + clusterIP: + type: string + clusterIPs: + items: + type: string + type: array + x-kubernetes-list-type: atomic + externalIPs: + items: + type: string + type: array + externalName: + type: string + externalTrafficPolicy: + type: string + healthCheckNodePort: + format: int32 + type: integer + internalTrafficPolicy: + type: string + ipFamilies: + items: + type: string + type: array + x-kubernetes-list-type: atomic + ipFamilyPolicy: + type: string + loadBalancerClass: + type: string + loadBalancerIP: + type: string + loadBalancerSourceRanges: + items: + type: string + type: array + ports: + items: + properties: + appProtocol: + type: string + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + protocol: + default: TCP + type: string + targetPort: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + publishNotReadyAddresses: + type: boolean + selector: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: atomic + sessionAffinity: + type: string + sessionAffinityConfig: + properties: + clientIP: + properties: + timeoutSeconds: + format: int32 + type: integer + type: object + type: object + type: + type: string + type: object + type: object + network: + properties: + connectTimeout: + format: int32 + type: integer + connectTimeoutLogError: + type: boolean + dnsMode: + type: string + dnsPreferIpv4: + type: boolean + dnsResolver: + type: string + keepalive: + type: boolean + keepaliveIdleTimeout: + format: int32 + type: integer + keepaliveMaxRecycle: + format: int32 + type: integer + sourceAddress: + type: string + type: object + podPriorityClassName: + type: string + positiondb: + properties: + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + host_path: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + pvc: + properties: + source: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + security: + properties: + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + 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 + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + podSecurityPolicyCreate: + type: boolean + roleBasedAccessControlCreate: + type: boolean + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + 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 + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + type: object + serviceAccount: + properties: + automountServiceAccountToken: + type: boolean + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + secrets: + items: + properties: + apiVersion: + type: string + fieldPath: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + resourceVersion: + type: string + uid: + type: string + type: object + type: array + type: object + targetHost: + type: string + targetPort: + format: int32 + type: integer + tls: + properties: + enabled: + type: boolean + secretName: + type: string + sharedKey: + type: string + required: + - enabled + type: object + varLogsPath: + type: string + type: object + profile: + type: string + type: object + type: array + skipInvalidResources: + type: boolean + watchNamespaces: + items: + type: string + type: array + required: + - controlNamespace + type: object + status: + properties: + configCheckResults: + additionalProperties: + type: boolean + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml new file mode 100644 index 0000000000..8aa0245de8 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml @@ -0,0 +1,11808 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.6.0 + creationTimestamp: null + name: outputs.logging.banzaicloud.io +spec: + group: logging.banzaicloud.io + names: + categories: + - logging-all + kind: Output + listKind: OutputList + plural: outputs + singular: output + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Is the output active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + awsElasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + endpoint: + properties: + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_arn: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_session_name: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_web_identity_token_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ecs_container_credentials_relative_uri: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + region: + type: string + secret_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + sts_credentials_region: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + flush_interval: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + azurestorage: + properties: + auto_create_container: + type: boolean + azure_container: + type: string + azure_imds_api_version: + type: string + azure_object_key_format: + type: string + azure_storage_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_account: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_sas_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + type: string + path: + type: string + slow_flush_log_threshold: + type: string + required: + - azure_container + - azure_storage_account + type: object + cloudwatch: + properties: + auto_create_stream: + type: boolean + aws_instance_profile_credentials_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sts_role_arn: + type: string + aws_sts_session_name: + type: string + aws_use_sts: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + concurrency: + type: integer + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + http_proxy: + type: string + include_time_key: + type: boolean + json_handler: + type: string + localtime: + type: boolean + log_group_aws_tags: + type: string + log_group_aws_tags_key: + type: string + log_group_name: + type: string + log_group_name_key: + type: string + log_rejected_request: + type: string + log_stream_name: + type: string + log_stream_name_key: + type: string + max_events_per_batch: + type: integer + max_message_length: + type: integer + message_keys: + type: string + put_log_events_disable_retry_limit: + type: boolean + put_log_events_retry_limit: + type: integer + put_log_events_retry_wait: + type: string + region: + type: string + remove_log_group_aws_tags_key: + type: string + remove_log_group_name_key: + type: string + remove_log_stream_name_key: + type: string + remove_retention_in_days: + type: string + retention_in_days: + type: string + retention_in_days_key: + type: string + slow_flush_log_threshold: + type: string + use_tag_as_group: + type: boolean + use_tag_as_stream: + type: boolean + required: + - region + type: object + datadog: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compression_level: + type: string + dd_hostname: + type: string + dd_source: + type: string + dd_sourcecategory: + type: string + dd_tags: + type: string + host: + type: string + include_tag_key: + type: boolean + max_backoff: + type: string + max_retries: + type: string + no_ssl_validation: + type: boolean + port: + type: string + service: + type: string + slow_flush_log_threshold: + type: string + ssl_port: + type: string + tag_key: + type: string + timestamp_key: + type: string + use_compression: + type: boolean + use_http: + type: boolean + use_json: + type: boolean + use_ssl: + type: boolean + required: + - api_key + type: object + elasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + file: + properties: + add_path_suffix: + type: boolean + append: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + path: + type: string + path_suffix: + type: string + recompress: + type: boolean + slow_flush_log_threshold: + type: string + symlink_path: + type: boolean + required: + - path + type: object + forward: + properties: + ack_response_timeout: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + connect_timeout: + type: integer + dns_round_robin: + type: boolean + expire_dns_cache: + type: integer + hard_timeout: + type: integer + heartbeat_interval: + type: integer + heartbeat_type: + type: string + ignore_network_errors_at_startup: + type: boolean + keepalive: + type: boolean + keepalive_timeout: + type: integer + phi_failure_detector: + type: boolean + phi_threshold: + type: integer + recover_wait: + type: integer + require_ack_response: + type: boolean + security: + properties: + allow_anonymous_source: + type: boolean + self_hostname: + type: string + shared_key: + type: string + user_auth: + type: boolean + required: + - self_hostname + - shared_key + type: object + send_timeout: + type: integer + servers: + items: + properties: + host: + type: string + name: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + shared_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + standby: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + weight: + type: integer + required: + - host + type: object + type: array + slow_flush_log_threshold: + type: string + tls_allow_self_signed_cert: + type: boolean + tls_cert_logical_store_name: + type: string + tls_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_cert_thumbprint: + type: string + tls_cert_use_enterprise_store: + type: boolean + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_insecure_mode: + type: boolean + tls_verify_hostname: + type: boolean + tls_version: + type: string + transport: + type: string + verify_connection_at_startup: + type: boolean + required: + - servers + type: object + gcs: + properties: + acl: + type: string + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_retries: + type: integer + client_timeout: + type: integer + credentials_json: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + encryption_key: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + keyfile: + type: string + object_key_format: + type: string + object_metadata: + items: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + overwrite: + type: boolean + path: + type: string + project: + type: string + slow_flush_log_threshold: + type: string + storage_class: + type: string + store_as: + type: string + transcoding: + type: boolean + required: + - bucket + - project + type: object + gelf: + properties: + host: + type: string + port: + type: integer + protocol: + type: string + tls: + type: boolean + tls_options: + additionalProperties: + type: string + type: object + required: + - host + - port + type: object + http: + properties: + auth: + properties: + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - password + - username + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + content_type: + type: string + endpoint: + type: string + error_response_as_unrecoverable: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + headers: + additionalProperties: + type: string + type: object + http_method: + type: string + json_array: + type: boolean + open_timeout: + type: integer + proxy: + type: string + read_timeout: + type: integer + retryable_response_codes: + items: + type: integer + type: array + slow_flush_log_threshold: + type: string + ssl_timeout: + type: integer + tls_ca_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_verify_mode: + type: string + tls_version: + type: string + required: + - endpoint + type: object + kafka: + properties: + ack_timeout: + type: integer + brokers: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_id: + type: string + compression_codec: + type: string + default_message_key: + type: string + default_partition_key: + type: string + default_topic: + type: string + discard_kafka_delivery_failed: + type: boolean + exclude_partion_key: + type: boolean + exclude_topic_key: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + get_kafka_client_log: + type: boolean + headers: + additionalProperties: + type: string + type: object + headers_from_record: + additionalProperties: + type: string + type: object + idempotent: + type: boolean + kafka_agg_max_bytes: + type: integer + kafka_agg_max_messages: + type: integer + keytab: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + max_send_retries: + type: integer + message_key_key: + type: string + partition_key: + type: string + partition_key_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + principal: + type: string + required_acks: + type: integer + sasl_over_ssl: + type: boolean + scram_mechanism: + type: string + slow_flush_log_threshold: + type: string + ssl_ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_ca_certs_from_system: + type: boolean + ssl_client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_chain: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_verify_hostname: + type: boolean + topic_key: + type: string + use_default_for_unknown_topic: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - brokers + - format + type: object + kinesisStream: + properties: + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + aws_iam_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_ses_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + batch_request_max_count: + type: integer + batch_request_max_size: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + partition_key: + type: string + process_credentials: + properties: + process: + type: string + required: + - process + type: object + region: + type: string + reset_backoff_if_success: + type: boolean + retries_on_batch_request: + type: integer + slow_flush_log_threshold: + type: string + stream_name: + type: string + required: + - stream_name + type: object + logdna: + properties: + api_key: + type: string + app: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + hostname: + type: string + ingester_domain: + type: string + ingester_endpoint: + type: string + request_timeout: + type: string + slow_flush_log_threshold: + type: string + tags: + type: string + required: + - api_key + - hostname + type: object + loggingRef: + type: string + logz: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_limit: + type: integer + bulk_limit_warning_limit: + type: integer + endpoint: + properties: + port: + type: integer + token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + gzip: + type: boolean + http_idle_timeout: + type: integer + output_include_tags: + type: boolean + output_include_time: + type: boolean + retry_count: + type: integer + retry_sleep: + type: integer + slow_flush_log_threshold: + type: string + required: + - endpoint + type: object + loki: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + configure_kubernetes_labels: + type: boolean + drop_single_key: + type: boolean + extra_labels: + additionalProperties: + type: string + type: object + extract_kubernetes_labels: + type: boolean + insecure_tls: + type: boolean + key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + labels: + additionalProperties: + type: string + type: object + line_format: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + remove_keys: + items: + type: string + type: array + slow_flush_log_threshold: + type: string + tenant: + type: string + url: + type: string + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + newrelic: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + base_uri: + type: string + license_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + nullout: + type: object + opensearch: + properties: + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + catch_transport_exception_on_retry: + type: boolean + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + compression_level: + type: string + custom_headers: + type: string + customize_template: + type: string + default_opensearch_version: + type: integer + emit_error_for_missing_id: + type: boolean + emit_error_label_event: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_os_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + http_backend_excon_nonblock: + type: boolean + id_key: + type: string + ignore_exceptions: + type: string + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_separator: + type: string + log_os_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_os_version: + type: integer + max_retry_putting_template: + type: string + parent_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + routing_key: + type: string + scheme: + type: string + selector_class_name: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_verify: + type: boolean + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_affinity: + type: boolean + target_index_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_exclude_timestamp: + type: boolean + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + truncate_caches_interval: + type: string + unrecoverable_error_types: + type: string + unrecoverable_record_types: + type: string + use_legacy_template: + type: boolean + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_os_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + oss: + properties: + aaccess_key_secret: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_bucket: + type: boolean + check_object: + type: boolean + download_crc_enable: + type: boolean + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + index_format: + type: string + key_format: + type: string + open_timeout: + type: integer + oss_sdk_log_dir: + type: string + overwrite: + type: boolean + path: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + store_as: + type: string + upload_crc_enable: + type: boolean + warn_for_delay: + type: string + required: + - aaccess_key_secret + - access_key_id + - bucket + - endpoint + type: object + redis: + properties: + allow_duplicate_key: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + db_number: + type: integer + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + insert_key_prefix: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + slow_flush_log_threshold: + type: string + strftime_format: + type: string + ttl: + type: integer + type: object + s3: + properties: + acl: + type: string + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + auto_create_bucket: + type: string + aws_iam_retries: + type: string + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_apikey_on_start: + type: string + check_bucket: + type: string + check_object: + type: string + clustername: + type: string + compress: + properties: + parquet_compression_codec: + type: string + parquet_page_size: + type: string + parquet_row_group_size: + type: string + record_type: + type: string + schema_file: + type: string + schema_type: + type: string + type: object + compute_checksums: + type: string + enable_transfer_acceleration: + type: string + force_path_style: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + grant_full_control: + type: string + grant_read: + type: string + grant_read_acp: + type: string + grant_write_acp: + type: string + hex_random_length: + type: string + index_format: + type: string + instance_profile_credentials: + properties: + http_open_timeout: + type: string + http_read_timeout: + type: string + ip_address: + type: string + port: + type: string + retries: + type: string + type: object + oneeye_format: + type: boolean + overwrite: + type: string + path: + type: string + proxy_uri: + type: string + s3_bucket: + type: string + s3_endpoint: + type: string + s3_metadata: + type: string + s3_object_key_format: + type: string + s3_region: + type: string + shared_credentials: + properties: + path: + type: string + profile_name: + type: string + type: object + signature_version: + type: string + slow_flush_log_threshold: + type: string + sse_customer_algorithm: + type: string + sse_customer_key: + type: string + sse_customer_key_md5: + type: string + ssekms_key_id: + type: string + ssl_verify_peer: + type: string + storage_class: + type: string + store_as: + type: string + use_bundled_cert: + type: string + use_server_side_encryption: + type: string + warn_for_delay: + type: string + required: + - s3_bucket + type: object + splunkHec: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + coerce_to_utf8: + type: boolean + data_type: + type: string + fields: + additionalProperties: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hec_host: + type: string + hec_port: + type: integer + hec_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + host: + type: string + host_key: + type: string + idle_timeout: + type: integer + index: + type: string + index_key: + type: string + insecure_ssl: + type: boolean + keep_keys: + type: boolean + metric_name_key: + type: string + metric_value_key: + type: string + metrics_from_event: + type: boolean + non_utf8_replacement_string: + type: string + open_timeout: + type: integer + protocol: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + source: + type: string + source_key: + type: string + sourcetype: + type: string + sourcetype_key: + type: string + ssl_ciphers: + type: string + required: + - hec_host + - hec_token + type: object + sqs: + properties: + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + create_queue: + type: boolean + delay_seconds: + type: integer + include_tag: + type: boolean + message_group_id: + type: string + queue_name: + type: string + region: + type: string + slow_flush_log_threshold: + type: string + sqs_url: + type: string + tag_property_name: + type: string + type: object + sumologic: + properties: + add_timestamp: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: boolean + compress_encoding: + type: string + custom_dimensions: + type: string + custom_fields: + items: + type: string + type: array + data_type: + type: string + delimiter: + type: string + disable_cookies: + type: boolean + endpoint: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + log_format: + type: string + log_key: + type: string + metric_data_format: + type: string + open_timeout: + type: integer + proxy_uri: + type: string + slow_flush_log_threshold: + type: string + source_category: + type: string + source_host: + type: string + source_name: + type: string + source_name_key: + type: string + sumo_client: + type: string + timestamp_key: + type: string + verify_ssl: + type: boolean + required: + - endpoint + - source_name + type: object + syslog: + properties: + allow_self_signed_cert: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + enable_system_cert_store: + type: boolean + format: + properties: + app_name_field: + type: string + hostname_field: + type: string + log_field: + type: string + message_id_field: + type: string + proc_id_field: + type: string + rfc6587_message_size: + type: boolean + structured_data_field: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + fqdn: + type: string + host: + type: string + insecure: + type: boolean + port: + type: integer + private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + slow_flush_log_threshold: + type: string + transport: + type: string + trusted_ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + verify_fqdn: + type: boolean + version: + type: string + required: + - host + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Is the output active? + jsonPath: .status.active + name: Active + type: boolean + - description: Number of problems + jsonPath: .status.problemsCount + name: Problems + type: integer + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + awsElasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + endpoint: + properties: + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_arn: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_session_name: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + assume_role_web_identity_token_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ecs_container_credentials_relative_uri: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + region: + type: string + secret_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + sts_credentials_region: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + flush_interval: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + azurestorage: + properties: + auto_create_container: + type: boolean + azure_container: + type: string + azure_imds_api_version: + type: string + azure_object_key_format: + type: string + azure_storage_access_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_account: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + azure_storage_sas_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + type: string + path: + type: string + slow_flush_log_threshold: + type: string + required: + - azure_container + - azure_storage_account + type: object + cloudwatch: + properties: + auto_create_stream: + type: boolean + aws_instance_profile_credentials_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sts_role_arn: + type: string + aws_sts_session_name: + type: string + aws_use_sts: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + concurrency: + type: integer + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + http_proxy: + type: string + include_time_key: + type: boolean + json_handler: + type: string + localtime: + type: boolean + log_group_aws_tags: + type: string + log_group_aws_tags_key: + type: string + log_group_name: + type: string + log_group_name_key: + type: string + log_rejected_request: + type: string + log_stream_name: + type: string + log_stream_name_key: + type: string + max_events_per_batch: + type: integer + max_message_length: + type: integer + message_keys: + type: string + put_log_events_disable_retry_limit: + type: boolean + put_log_events_retry_limit: + type: integer + put_log_events_retry_wait: + type: string + region: + type: string + remove_log_group_aws_tags_key: + type: string + remove_log_group_name_key: + type: string + remove_log_stream_name_key: + type: string + remove_retention_in_days: + type: string + retention_in_days: + type: string + retention_in_days_key: + type: string + slow_flush_log_threshold: + type: string + use_tag_as_group: + type: boolean + use_tag_as_stream: + type: boolean + required: + - region + type: object + datadog: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compression_level: + type: string + dd_hostname: + type: string + dd_source: + type: string + dd_sourcecategory: + type: string + dd_tags: + type: string + host: + type: string + include_tag_key: + type: boolean + max_backoff: + type: string + max_retries: + type: string + no_ssl_validation: + type: boolean + port: + type: string + service: + type: string + slow_flush_log_threshold: + type: string + ssl_port: + type: string + tag_key: + type: string + timestamp_key: + type: string + use_compression: + type: boolean + use_http: + type: boolean + use_json: + type: boolean + use_ssl: + type: boolean + required: + - api_key + type: object + elasticsearch: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + content_type: + type: string + custom_headers: + type: string + customize_template: + type: string + data_stream_enable: + type: boolean + data_stream_ilm_name: + type: string + data_stream_ilm_policy: + type: string + data_stream_ilm_policy_overwrite: + type: boolean + data_stream_name: + type: string + data_stream_template_name: + type: string + default_elasticsearch_version: + type: string + deflector_alias: + type: string + enable_ilm: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_es_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + id_key: + type: string + ignore_exceptions: + type: string + ilm_policy: + type: string + ilm_policy_id: + type: string + ilm_policy_overwrite: + type: boolean + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_prefix: + type: string + log_es_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_es_version: + type: string + max_retry_putting_template: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys: + type: string + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + rollover_index: + type: boolean + routing_key: + type: string + scheme: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_max_version: + type: string + ssl_min_version: + type: string + ssl_verify: + type: boolean + ssl_version: + type: string + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_key: + type: string + target_type_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + type_name: + type: string + unrecoverable_error_types: + type: string + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_es_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + file: + properties: + add_path_suffix: + type: boolean + append: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + path: + type: string + path_suffix: + type: string + recompress: + type: boolean + slow_flush_log_threshold: + type: string + symlink_path: + type: boolean + required: + - path + type: object + forward: + properties: + ack_response_timeout: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + connect_timeout: + type: integer + dns_round_robin: + type: boolean + expire_dns_cache: + type: integer + hard_timeout: + type: integer + heartbeat_interval: + type: integer + heartbeat_type: + type: string + ignore_network_errors_at_startup: + type: boolean + keepalive: + type: boolean + keepalive_timeout: + type: integer + phi_failure_detector: + type: boolean + phi_threshold: + type: integer + recover_wait: + type: integer + require_ack_response: + type: boolean + security: + properties: + allow_anonymous_source: + type: boolean + self_hostname: + type: string + shared_key: + type: string + user_auth: + type: boolean + required: + - self_hostname + - shared_key + type: object + send_timeout: + type: integer + servers: + items: + properties: + host: + type: string + name: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + shared_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + standby: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + weight: + type: integer + required: + - host + type: object + type: array + slow_flush_log_threshold: + type: string + tls_allow_self_signed_cert: + type: boolean + tls_cert_logical_store_name: + type: string + tls_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_cert_thumbprint: + type: string + tls_cert_use_enterprise_store: + type: boolean + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_client_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_insecure_mode: + type: boolean + tls_verify_hostname: + type: boolean + tls_version: + type: string + transport: + type: string + verify_connection_at_startup: + type: boolean + required: + - servers + type: object + gcs: + properties: + acl: + type: string + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_retries: + type: integer + client_timeout: + type: integer + credentials_json: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + encryption_key: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + keyfile: + type: string + object_key_format: + type: string + object_metadata: + items: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + type: array + overwrite: + type: boolean + path: + type: string + project: + type: string + slow_flush_log_threshold: + type: string + storage_class: + type: string + store_as: + type: string + transcoding: + type: boolean + required: + - bucket + - project + type: object + gelf: + properties: + host: + type: string + port: + type: integer + protocol: + type: string + tls: + type: boolean + tls_options: + additionalProperties: + type: string + type: object + required: + - host + - port + type: object + http: + properties: + auth: + properties: + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - password + - username + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + content_type: + type: string + endpoint: + type: string + error_response_as_unrecoverable: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + headers: + additionalProperties: + type: string + type: object + http_method: + type: string + json_array: + type: boolean + open_timeout: + type: integer + proxy: + type: string + read_timeout: + type: integer + retryable_response_codes: + items: + type: integer + type: array + slow_flush_log_threshold: + type: string + ssl_timeout: + type: integer + tls_ca_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_ciphers: + type: string + tls_client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + tls_verify_mode: + type: string + tls_version: + type: string + required: + - endpoint + type: object + kafka: + properties: + ack_timeout: + type: integer + brokers: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_id: + type: string + compression_codec: + type: string + default_message_key: + type: string + default_partition_key: + type: string + default_topic: + type: string + discard_kafka_delivery_failed: + type: boolean + exclude_partion_key: + type: boolean + exclude_topic_key: + type: boolean + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + get_kafka_client_log: + type: boolean + headers: + additionalProperties: + type: string + type: object + headers_from_record: + additionalProperties: + type: string + type: object + idempotent: + type: boolean + kafka_agg_max_bytes: + type: integer + kafka_agg_max_messages: + type: integer + keytab: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + max_send_retries: + type: integer + message_key_key: + type: string + partition_key: + type: string + partition_key_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + principal: + type: string + required_acks: + type: integer + sasl_over_ssl: + type: boolean + scram_mechanism: + type: string + slow_flush_log_threshold: + type: string + ssl_ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_ca_certs_from_system: + type: boolean + ssl_client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_chain: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_client_cert_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ssl_verify_hostname: + type: boolean + topic_key: + type: string + use_default_for_unknown_topic: + type: boolean + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + required: + - brokers + - format + type: object + kinesisStream: + properties: + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + aws_iam_retries: + type: integer + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_ses_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + batch_request_max_count: + type: integer + batch_request_max_size: + type: integer + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + partition_key: + type: string + process_credentials: + properties: + process: + type: string + required: + - process + type: object + region: + type: string + reset_backoff_if_success: + type: boolean + retries_on_batch_request: + type: integer + slow_flush_log_threshold: + type: string + stream_name: + type: string + required: + - stream_name + type: object + logdna: + properties: + api_key: + type: string + app: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + hostname: + type: string + ingester_domain: + type: string + ingester_endpoint: + type: string + request_timeout: + type: string + slow_flush_log_threshold: + type: string + tags: + type: string + required: + - api_key + - hostname + type: object + loggingRef: + type: string + logz: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_limit: + type: integer + bulk_limit_warning_limit: + type: integer + endpoint: + properties: + port: + type: integer + token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + url: + type: string + type: object + gzip: + type: boolean + http_idle_timeout: + type: integer + output_include_tags: + type: boolean + output_include_time: + type: boolean + retry_count: + type: integer + retry_sleep: + type: integer + slow_flush_log_threshold: + type: string + required: + - endpoint + type: object + loki: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + configure_kubernetes_labels: + type: boolean + drop_single_key: + type: boolean + extra_labels: + additionalProperties: + type: string + type: object + extract_kubernetes_labels: + type: boolean + insecure_tls: + type: boolean + key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + labels: + additionalProperties: + type: string + type: object + line_format: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + remove_keys: + items: + type: string + type: array + slow_flush_log_threshold: + type: string + tenant: + type: string + url: + type: string + username: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + newrelic: + properties: + api_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + base_uri: + type: string + license_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + type: object + nullout: + type: object + opensearch: + properties: + application_name: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + bulk_message_request_threshold: + type: string + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + catch_transport_exception_on_retry: + type: boolean + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key_pass: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + compression_level: + type: string + custom_headers: + type: string + customize_template: + type: string + default_opensearch_version: + type: integer + emit_error_for_missing_id: + type: boolean + emit_error_label_event: + type: boolean + exception_backup: + type: boolean + fail_on_detecting_os_version_retry_exceed: + type: boolean + fail_on_putting_template_retry_exceed: + type: boolean + flatten_hashes: + type: boolean + flatten_hashes_separator: + type: string + host: + type: string + hosts: + type: string + http_backend: + type: string + http_backend_excon_nonblock: + type: boolean + id_key: + type: string + ignore_exceptions: + type: string + include_index_in_url: + type: boolean + include_tag_key: + type: boolean + include_timestamp: + type: boolean + index_date_pattern: + type: string + index_name: + type: string + index_separator: + type: string + log_os_400_reason: + type: boolean + logstash_dateformat: + type: string + logstash_format: + type: boolean + logstash_prefix: + type: string + logstash_prefix_separator: + type: string + max_retry_get_os_version: + type: integer + max_retry_putting_template: + type: string + parent_key: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + path: + type: string + pipeline: + type: string + port: + type: integer + prefer_oj_serializer: + type: boolean + reconnect_on_error: + type: boolean + reload_after: + type: string + reload_connections: + type: boolean + reload_on_failure: + type: boolean + remove_keys_on_update: + type: string + remove_keys_on_update_key: + type: string + request_timeout: + type: string + resurrect_after: + type: string + retry_tag: + type: string + routing_key: + type: string + scheme: + type: string + selector_class_name: + type: string + slow_flush_log_threshold: + type: string + sniffer_class_name: + type: string + ssl_verify: + type: boolean + suppress_doc_wrap: + type: boolean + suppress_type_name: + type: boolean + tag_key: + type: string + target_index_affinity: + type: boolean + target_index_key: + type: string + template_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + template_name: + type: string + template_overwrite: + type: boolean + templates: + type: string + time_key: + type: string + time_key_exclude_timestamp: + type: boolean + time_key_format: + type: string + time_parse_error_tag: + type: string + time_precision: + type: string + truncate_caches_interval: + type: string + unrecoverable_error_types: + type: string + unrecoverable_record_types: + type: string + use_legacy_template: + type: boolean + user: + type: string + utc_index: + type: boolean + validate_client_version: + type: boolean + verify_os_version_at_startup: + type: boolean + with_transporter_log: + type: boolean + write_operation: + type: string + type: object + oss: + properties: + aaccess_key_secret: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + access_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + auto_create_bucket: + type: boolean + bucket: + type: string + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_bucket: + type: boolean + check_object: + type: boolean + download_crc_enable: + type: boolean + endpoint: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hex_random_length: + type: integer + index_format: + type: string + key_format: + type: string + open_timeout: + type: integer + oss_sdk_log_dir: + type: string + overwrite: + type: boolean + path: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + store_as: + type: string + upload_crc_enable: + type: boolean + warn_for_delay: + type: string + required: + - aaccess_key_secret + - access_key_id + - bucket + - endpoint + type: object + redis: + properties: + allow_duplicate_key: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + db_number: + type: integer + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + host: + type: string + insert_key_prefix: + type: string + password: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + port: + type: integer + slow_flush_log_threshold: + type: string + strftime_format: + type: string + ttl: + type: integer + type: object + s3: + properties: + acl: + type: string + assume_role_credentials: + properties: + duration_seconds: + type: string + external_id: + type: string + policy: + type: string + role_arn: + type: string + role_session_name: + type: string + required: + - role_arn + - role_session_name + type: object + auto_create_bucket: + type: string + aws_iam_retries: + type: string + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + check_apikey_on_start: + type: string + check_bucket: + type: string + check_object: + type: string + clustername: + type: string + compress: + properties: + parquet_compression_codec: + type: string + parquet_page_size: + type: string + parquet_row_group_size: + type: string + record_type: + type: string + schema_file: + type: string + schema_type: + type: string + type: object + compute_checksums: + type: string + enable_transfer_acceleration: + type: string + force_path_style: + type: string + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + grant_full_control: + type: string + grant_read: + type: string + grant_read_acp: + type: string + grant_write_acp: + type: string + hex_random_length: + type: string + index_format: + type: string + instance_profile_credentials: + properties: + http_open_timeout: + type: string + http_read_timeout: + type: string + ip_address: + type: string + port: + type: string + retries: + type: string + type: object + oneeye_format: + type: boolean + overwrite: + type: string + path: + type: string + proxy_uri: + type: string + s3_bucket: + type: string + s3_endpoint: + type: string + s3_metadata: + type: string + s3_object_key_format: + type: string + s3_region: + type: string + shared_credentials: + properties: + path: + type: string + profile_name: + type: string + type: object + signature_version: + type: string + slow_flush_log_threshold: + type: string + sse_customer_algorithm: + type: string + sse_customer_key: + type: string + sse_customer_key_md5: + type: string + ssekms_key_id: + type: string + ssl_verify_peer: + type: string + storage_class: + type: string + store_as: + type: string + use_bundled_cert: + type: string + use_server_side_encryption: + type: string + warn_for_delay: + type: string + required: + - s3_bucket + type: object + splunkHec: + properties: + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + ca_file: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_cert: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + client_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + coerce_to_utf8: + type: boolean + data_type: + type: string + fields: + additionalProperties: + type: string + type: object + format: + properties: + add_newline: + type: boolean + message_key: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + hec_host: + type: string + hec_port: + type: integer + hec_token: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + host: + type: string + host_key: + type: string + idle_timeout: + type: integer + index: + type: string + index_key: + type: string + insecure_ssl: + type: boolean + keep_keys: + type: boolean + metric_name_key: + type: string + metric_value_key: + type: string + metrics_from_event: + type: boolean + non_utf8_replacement_string: + type: string + open_timeout: + type: integer + protocol: + type: string + read_timeout: + type: integer + slow_flush_log_threshold: + type: string + source: + type: string + source_key: + type: string + sourcetype: + type: string + sourcetype_key: + type: string + ssl_ciphers: + type: string + required: + - hec_host + - hec_token + type: object + sqs: + properties: + aws_key_id: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + aws_sec_key: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + create_queue: + type: boolean + delay_seconds: + type: integer + include_tag: + type: boolean + message_group_id: + type: string + queue_name: + type: string + region: + type: string + slow_flush_log_threshold: + type: string + sqs_url: + type: string + tag_property_name: + type: string + type: object + sumologic: + properties: + add_timestamp: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + compress: + type: boolean + compress_encoding: + type: string + custom_dimensions: + type: string + custom_fields: + items: + type: string + type: array + data_type: + type: string + delimiter: + type: string + disable_cookies: + type: boolean + endpoint: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + log_format: + type: string + log_key: + type: string + metric_data_format: + type: string + open_timeout: + type: integer + proxy_uri: + type: string + slow_flush_log_threshold: + type: string + source_category: + type: string + source_host: + type: string + source_name: + type: string + source_name_key: + type: string + sumo_client: + type: string + timestamp_key: + type: string + verify_ssl: + type: boolean + required: + - endpoint + - source_name + type: object + syslog: + properties: + allow_self_signed_cert: + type: boolean + buffer: + properties: + chunk_full_threshold: + type: string + chunk_limit_records: + type: integer + chunk_limit_size: + type: string + compress: + type: string + delayed_commit_timeout: + type: string + disable_chunk_backup: + type: boolean + disabled: + type: boolean + flush_at_shutdown: + type: boolean + flush_interval: + type: string + flush_mode: + type: string + flush_thread_burst_interval: + type: string + flush_thread_count: + type: integer + flush_thread_interval: + type: string + overflow_action: + type: string + path: + type: string + queue_limit_length: + type: integer + queued_chunks_limit_size: + type: integer + retry_exponential_backoff_base: + type: string + retry_forever: + type: boolean + retry_max_interval: + type: string + retry_max_times: + type: integer + retry_randomize: + type: boolean + retry_secondary_threshold: + type: string + retry_timeout: + type: string + retry_type: + type: string + retry_wait: + type: string + tags: + type: string + timekey: + type: string + timekey_use_utc: + type: boolean + timekey_wait: + type: string + timekey_zone: + type: string + total_limit_size: + type: string + type: + type: string + type: object + client_cert_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + enable_system_cert_store: + type: boolean + format: + properties: + app_name_field: + type: string + hostname_field: + type: string + log_field: + type: string + message_id_field: + type: string + proc_id_field: + type: string + rfc6587_message_size: + type: boolean + structured_data_field: + type: string + type: + enum: + - out_file + - json + - ltsv + - csv + - msgpack + - hash + - single_value + type: string + type: object + fqdn: + type: string + host: + type: string + insecure: + type: boolean + port: + type: integer + private_key_passphrase: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + private_key_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + slow_flush_log_threshold: + type: string + transport: + type: string + trusted_ca_path: + properties: + mountFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + value: + type: string + valueFrom: + properties: + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + type: object + verify_fqdn: + type: boolean + version: + type: string + required: + - host + type: object + type: object + status: + properties: + active: + type: boolean + problems: + items: + type: string + type: array + problemsCount: + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/rancher-logging/102.0.3+up3.17.10/.helmignore b/charts/rancher-logging/102.0.3+up3.17.10/.helmignore new file mode 100644 index 0000000000..50af031725 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/rancher-logging/102.0.3+up3.17.10/Chart.yaml b/charts/rancher-logging/102.0.3+up3.17.10/Chart.yaml new file mode 100644 index 0000000000..c7e3aa39f7 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/Chart.yaml @@ -0,0 +1,25 @@ +annotations: + catalog.cattle.io/auto-install: rancher-logging-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/deploys-on-os: windows + catalog.cattle.io/display-name: Logging + catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: cattle-logging-system + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' + catalog.cattle.io/release-name: rancher-logging + catalog.cattle.io/type: cluster-tool + catalog.cattle.io/ui-component: logging + catalog.cattle.io/upstream-version: 3.17.10 +apiVersion: v1 +appVersion: 3.17.10 +description: Collects and filter logs using highly configurable CRDs. Powered by Banzai + Cloud Logging Operator. +icon: https://charts.rancher.io/assets/logos/logging.svg +keywords: +- logging +- monitoring +- security +name: rancher-logging +version: 102.0.3+up3.17.10 diff --git a/charts/rancher-logging/102.0.3+up3.17.10/README.md b/charts/rancher-logging/102.0.3+up3.17.10/README.md new file mode 100644 index 0000000000..48a1a6a05a --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/README.md @@ -0,0 +1,132 @@ + +# Logging operator Chart + +[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. + +## tl;dr: + +```bash +$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com +$ helm repo update +$ helm install banzaicloud-stable/logging-operator +``` + +## Introduction + +This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.8+ with Beta APIs enabled + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +$ helm install --name my-release banzaicloud-stable/logging-operator +``` + +### CRDs +Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. + +The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +$ helm delete my-release +``` + +The command removes all Kubernetes components associated with the chart and deletes the release. + +## Configuration + +The following tables lists the configurable parameters of the logging-operator chart and their default values. + +| Parameter | Description | Default | +| --------------------------------------------------- | ------------------------------------------------------ |-----------------------------------------------------------------------| +| `image.repository` | Container image repository | `ghcr.io/banzaicloud/logging-operator` | +| `image.tag` | Container image tag | `3.17.10` | +| `image.pullPolicy` | Container pull policy | `IfNotPresent` | +| `nameOverride` | Override name of app | `` | +| `fullnameOverride` | Override full name of app | `` | +| `namespaceOverride` | Override namespace of app | `` | +| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | +| `rbac.enabled` | Create rbac service account and roles | `true` | +| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | +| `priorityClassName` | Operator priorityClassName | `{}` | +| `affinity` | Node Affinity | `{}` | +| `resources` | CPU/Memory resource requests/limits | `{}` | +| `tolerations` | Node Tolerations | `[]` | +| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | +| `podLabels` | Define custom labels for logging-operator pods | `{}` | +| `annotations` | Define annotations for logging-operator pods | `{}` | +| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | +| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | +| `createCustomResource` | Create CRDs. | `true` | +| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | +| `serviceAccount.annotations` | Define annotations for logging-operator ServiceAccount | `{}` | +| `global.seLinux.enabled` | Add seLinuxOptions to Logging resources, requires the [rke2-selinux RPM](https://github.com/rancher/rke2-selinux/releases) | `false` | + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: + +```bash +$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Installing Fluentd and Fluent-bit via logging + +The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. + +## tl;dr: + +```bash +$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com +$ helm repo update +$ helm install banzaicloud-stable/logging-operator-logging +``` + +## Configuration + +The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. +## tl;dr: + +```bash +$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com +$ helm repo update +$ helm install banzaicloud-stable/logging-operator-logging +``` + +## Configuration + +The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. + +| Parameter | Description | Default | +| --------------------------------------------------- | ------------------------------------------------------ |------------------------------------------------------------| +| `tls.enabled` | Enabled TLS communication between components | true | +| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | +| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | +| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | +| `fluentbit.enabled` | Install fluent-bit | true | +| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | +| `fluentbit.image.tag` | Fluentbit container image tag | `1.9.5` | +| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | +| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | +| `fluentd.enabled` | Install fluentd | true | +| `fluentd.image.tag` | Fluentd container image tag | `v1.14.6-alpine-5` | +| `fluentd.image.repository` | Fluentd container image repository | `ghcr.io/banzaicloud/fluentd` | +| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | +| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | +| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | +| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | +| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | +| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | +| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | +| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | +| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | +| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/102.0.3+up3.17.10/app-readme.md b/charts/rancher-logging/102.0.3+up3.17.10/app-readme.md new file mode 100644 index 0000000000..994c597ee5 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/app-readme.md @@ -0,0 +1,45 @@ +# Rancher Logging + +This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. + +For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.7/). + +## Upgrading to Kubernetes v1.25+ + +Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. + +As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. + +> **Note:** +> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. + +> **Note:** +> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** +> +> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. + +Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. + +As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. + +## Namespace-level logging + +To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. + +## Cluster-level logging + +To collect logs from an entire cluster, users create cluster flows and cluster outputs. + +## CRDs + +- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. +- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. +- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. +- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. + +For more information on how to configure the Helm chart, refer to the Helm README. + +## Systemd Configuration +Some Kubernetes distributions log to journald. In order to collect these logs the `systemdLogPath` needs to be defined. While the `/run/log/journal` directory is used by default, some Linux distributions do not default to this path. For example Ubuntu defaults to `/var/log/journal`. To determine your `systemdLogPath` run `cat /etc/systemd/journald.conf | grep -E ^\#?Storage | cut -d"=" -f2` on one of your nodes. If `persistent` is returned your `systemdLogPath` should be `/var/log/journal`. If `volatile` is returned `systemdLogPath` should be `/run/log/journal`. If `auto` is returned check if `/var/log/journal` exists, and if it does then use `/var/log/journal`, otherwise use `/run/log/journal`. + +If any value not described here is returned, Rancher Logging will not be able to collect control plane logs. To address this issue set `Storage=volatile` in journald.conf, reboot your machine, and set `systemdLogPath` to `/run/log/journal`. diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/NOTES.txt b/charts/rancher-logging/102.0.3+up3.17.10/templates/NOTES.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/_generic_logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/_generic_logging.yaml new file mode 100644 index 0000000000..1583fa4498 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/_generic_logging.yaml @@ -0,0 +1,121 @@ +{{- define "logging-operator.logging.tpl" -}} +apiVersion: logging.banzaicloud.io/v1beta1 +kind: Logging +metadata: + namespace: {{ .Release.Namespace }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +spec: + controlNamespace: {{ .Release.Namespace }} + fluentbit: + image: + repository: {{ template "logging-operator.fluentbitImageRepository" . }} + tag: {{ template "logging-operator.fluentbitImageTag" . }} + {{- if not .Values.disablePvc }} + {{- with .Values.fluentbit.bufferStorage }} + bufferStorage: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.fluentbit.bufferStorageVolume }} + bufferStorageVolume: {{- toYaml . | nindent 6 }} + {{- end }} + {{- end }} + {{- if or .Values.global.cattle.psp.enabled .Values.global.seLinux.enabled }} + security: + {{- end }} + {{- if .Values.global.cattle.psp.enabled }} + podSecurityPolicyCreate: true + roleBasedAccessControlCreate: true + {{- end }} + {{- if .Values.global.seLinux.enabled }} + securityContext: + seLinuxOptions: + type: rke_logreader_t + {{- end }} + {{- if or .Values.fluentbit.inputTail.Buffer_Chunk_Size .Values.fluentbit.inputTail.Buffer_Max_Size .Values.fluentbit.inputTail.Mem_Buf_Limit .Values.fluentbit.inputTail.Multiline_Flush .Values.fluentbit.inputTail.Skip_Long_Lines }} + inputTail: + {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} + Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} + Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} + Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Multiline_Flush }} + Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} + Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} + {{- end }} + {{- end }} + {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} + tolerations: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.fluentbit.resources }} + resources: {{- toYaml . | nindent 6 }} + {{- end }} + fluentd: + image: + repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} + tag: {{ .Values.images.fluentd.tag }} + configReloaderImage: + repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} + tag: {{ .Values.images.config_reloader.tag }} + {{- with .Values.fluentd.bufferStorageVolume }} + bufferStorageVolume: {{- toYaml . | nindent 6 }} + {{- end }} + disablePvc: {{ .Values.disablePvc }} + {{- if .Values.fluentd.replicas }} + scaling: + replicas: {{ .Values.fluentd.replicas }} + {{- end }} + security: + podSecurityContext: + runAsUser: 100 + {{- if .Values.global.cattle.psp.enabled }} + podSecurityPolicyCreate: true + roleBasedAccessControlCreate: true + {{- end }} + {{- with .Values.fluentd.env }} + envVars: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} + tolerations: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} + nodeSelector: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.fluentd.resources }} + resources: {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.fluentd.livenessProbe }} + livenessProbe: {{- toYaml . | nindent 6 }} + {{- end }} +{{- end -}} + +{{- define "logging-operator.util.merge.logging" -}} +{{/* Top context to expose fields like `.Release` and `.Values` */}} +{{- $top := first . -}} + +{{/* tpl is the template specific to the logging implementation */}} +{{- $tpl := fromYaml (include (index . 1) $top) | default (dict ) -}} + +{{/* Generic is the shared rancher logging setttings from `_generic_logging.yaml` */}} +{{- $generic := fromYaml (include (index . 2) $top) | default (dict ) -}} + +{{/* values are from the values.yaml */}} +{{- $values := $top.Values.loggingOverlay | default (dict ) -}} + +####### {{$generic}} + +{{/* the sources are merge right to left meaning tpl is the highest prcedence and values is the lowest */}} +{{- toYaml (merge $tpl $values $generic) -}} +{{- end -}} + +{{- define "logging-operator.logging" -}} +{{- include "logging-operator.util.merge.logging" (append . "logging-operator.logging.tpl") -}} +{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/_helpers.tpl b/charts/rancher-logging/102.0.3+up3.17.10/templates/_helpers.tpl new file mode 100644 index 0000000000..7f070904c1 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/_helpers.tpl @@ -0,0 +1,179 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "logging-operator.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "logging-operator.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Provides the namespace the chart will be installed in using the builtin .Release.Namespace, +or, if provided, a manually overwritten namespace value. +*/}} +{{- define "logging-operator.namespace" -}} +{{- if .Values.namespaceOverride -}} +{{ .Values.namespaceOverride -}} +{{- else -}} +{{ .Release.Namespace }} +{{- end -}} +{{- end -}} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "logging-operator.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common labels +*/}} +{{- define "logging-operator.labels" -}} +app.kubernetes.io/name: {{ include "logging-operator.name" . }} +helm.sh/chart: {{ include "logging-operator.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + +{{- define "windowsEnabled" }} +{{- if not (kindIs "invalid" .Values.global.cattle.windows) }} +{{- if not (kindIs "invalid" .Values.global.cattle.windows.enabled) }} +{{- if .Values.global.cattle.windows.enabled }} +true +{{- end }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "windowsPathPrefix" -}} +{{- trimSuffix "/" (default "c:\\" .Values.global.cattle.rkeWindowsPathPrefix | replace "\\" "/" | replace "//" "/" | replace "c:" "C:") -}} +{{- end -}} + +{{- define "windowsKubernetesFilter" -}} +{{- printf "kubernetes.%s" ((include "windowsPathPrefix" .) | replace ":" "" | replace "/" ".") -}} +{{- end -}} + +{{- define "windowsInputTailMount" -}} +{{- (include "windowsPathPrefix" .) | replace "C:" "" -}} +{{- end -}} + +{{/* +Set the controlplane selector based on kubernetes distribution +*/}} +{{- define "controlplaneSelector" -}} +{{- $master := or .Values.additionalLoggingSources.rke2.enabled .Values.additionalLoggingSources.k3s.enabled -}} +{{- $defaultSelector := $master | ternary (dict "node-role.kubernetes.io/master" "true") (dict "node-role.kubernetes.io/controlplane" "true") -}} +{{ default $defaultSelector .Values.additionalLoggingSources.kubeAudit.nodeSelector | toYaml }} +{{- end -}} + +{{/* +Set kube-audit file path prefix based on distribution +*/}} +{{- define "kubeAuditPathPrefix" -}} +{{- if .Values.additionalLoggingSources.rke.enabled -}} +{{ default "/var/log/kube-audit" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} +{{- else if .Values.additionalLoggingSources.rke2.enabled -}} +{{ default "/var/lib/rancher/rke2/server/logs" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} +{{- else -}} +{{ required "Directory PathPrefix of the kube-audit location is required" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} +{{- end -}} +{{- end -}} + +{{/* +Set kube-audit file name based on distribution +*/}} +{{- define "kubeAuditFilename" -}} +{{- if .Values.additionalLoggingSources.rke.enabled -}} +{{ default "audit-log.json" .Values.additionalLoggingSources.kubeAudit.auditFilename }} +{{- else if .Values.additionalLoggingSources.rke2.enabled -}} +{{ default "audit.log" .Values.additionalLoggingSources.kubeAudit.auditFilename }} +{{- else -}} +{{ required "Filename of the kube-audit log is required" .Values.additionalLoggingSources.kubeAudit.auditFilename }} +{{- end -}} +{{- end -}} + +{{/* +A shared list of custom parsers for the vairous fluentbit pods rancher creates +*/}} +{{- define "logging-operator.parsers" -}} +[PARSER] + Name klog + Format regex + Regex ^(?[IWEF])(?\d{4} \d{2}:\d{2}:\d{2}).\d{6} +?(?\d+) (?.+):(?\d+)] (?.+) + Time_Key timestamp + Time_Format %m%d %T + +[PARSER] + Name rancher + Format regex + Regex ^time="(?.+)" level=(?.+) msg="(?.+)"$ + Time_Key timestamp + Time_Format %FT%H:%M:%S +[PARSER] + Name etcd + Format json + Time_Key timestamp + Time_Format %FT%H:%M:%S.%L +{{- end -}} + +{{/* +Set kubernetes log options if they are configured +*/}} +{{- define "requireFilterKubernetes" -}} +{{- if or .Values.fluentbit.filterKubernetes.Merge_Log .Values.fluentbit.filterKubernetes.Merge_Log_Key .Values.fluentbit.filterKubernetes.Merge_Trim .Values.fluentbit.filterKubernetes.Merge_Parser -}} +true +{{- end -}} +{{- end -}} + +{{/*Fluent Bit Image Repository */}} +{{- define "logging-operator.fluentbitImageRepository" -}} +{{- if .Values.debug -}} +{{ template "system_default_registry" . }}{{ .Values.images.fluentbit_debug.repository }} +{{- else -}} +{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} +{{- end -}} +{{- end -}} + +{{/*Fluent Bit Image Tag */}} +{{- define "logging-operator.fluentbitImageTag" -}} +{{- if .Values.debug -}} +{{ .Values.images.fluentbit_debug.tag }} +{{- else -}} +{{ .Values.images.fluentbit.tag }} +{{- end -}} +{{- end -}} + +{{/*Fluent Bit Image */}} +{{- define "logging-operator.fluentbitImage" -}} +{{ template "logging-operator.fluentbitImageRepository" . }}:{{ template "logging-operator.fluentbitImageTag" . }} +{{- end -}} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrole.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrole.yaml new file mode 100644 index 0000000000..a5d7a85c25 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrole.yaml @@ -0,0 +1,318 @@ +{{- if .Values.rbac.enabled }} + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: {{ template "logging-operator.fullname" . }} +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - endpoints + - namespaces + - nodes + - nodes/proxy + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - create + - get + - list + - watch +- apiGroups: + - "" + resources: + - persistentvolumeclaims + - pods + - serviceaccounts + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + - events.k8s.io + resources: + - events + verbs: + - create + - get + - list + - watch +- apiGroups: + - apps + resources: + - daemonsets + - replicasets + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - apps + - extensions + resources: + - daemonsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - apps + - extensions + resources: + - deployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - apps + - extensions + resources: + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - batch + resources: + - jobs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - '*' +- apiGroups: + - events.k8s.io + resources: + - events + verbs: + - get + - list + - watch +- apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - extensions + - policy + resources: + - podsecuritypolicies + verbs: + - create + - delete + - get + - list + - patch + - update + - use + - watch +- apiGroups: + - logging-extensions.banzaicloud.io + resources: + - eventtailers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - logging-extensions.banzaicloud.io + resources: + - eventtailers/status + verbs: + - get + - patch + - update +- apiGroups: + - logging-extensions.banzaicloud.io + resources: + - hosttailers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - logging-extensions.banzaicloud.io + resources: + - hosttailers/status + verbs: + - get + - patch + - update +- apiGroups: + - logging.banzaicloud.io + resources: + - clusterflows + - clusteroutputs + - flows + - loggings + - outputs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - logging.banzaicloud.io + resources: + - clusterflows/status + - clusteroutputs/status + - flows/status + - loggings/status + - outputs/status + verbs: + - get + - patch + - update +- apiGroups: + - monitoring.coreos.com + resources: + - prometheusrules + - servicemonitors + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - clusterroles + - rolebindings + - roles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrolebinding.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrolebinding.yaml new file mode 100644 index 0000000000..89d17d094f --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/clusterrolebinding.yaml @@ -0,0 +1,18 @@ +{{- if .Values.rbac.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "logging-operator.fullname" . }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +subjects: + - kind: ServiceAccount + name: {{ template "logging-operator.fullname" . }} + namespace: {{ include "logging-operator.namespace" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "logging-operator.fullname" . }} + + {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/crds.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/crds.yaml new file mode 100644 index 0000000000..f573652d04 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/crds.yaml @@ -0,0 +1,6 @@ +{{- if .Values.createCustomResource -}} +{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} +{{ $.Files.Get $path }} +--- +{{- end }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/deployment.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/deployment.yaml new file mode 100644 index 0000000000..e1ec64f6d6 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/deployment.yaml @@ -0,0 +1,77 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "logging-operator.fullname" . }} + namespace: {{ include "logging-operator.namespace" . }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "logging-operator.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "logging-operator.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.podLabels }} + {{ toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.annotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName }} + {{- end }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" + args: + {{- range .Values.extraArgs }} + - {{ . }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.http.port }} + {{- with .Values.env }} + env: {{ toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.securityContext }} + securityContext: {{ toYaml .Values.securityContext | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: {{ toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: {{ toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.podSecurityContext }} + securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} + {{- end }} + + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.rbac.enabled }} + serviceAccountName: {{ include "logging-operator.fullname" . }} + {{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/aks/logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/aks/logging.yaml new file mode 100644 index 0000000000..54bb732505 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/aks/logging.yaml @@ -0,0 +1,18 @@ +{{- define "logging-operator.logging.aks" -}} +{{- $logPath := "/var/log/azure/kubelet-status.log" -}} +metadata: + name: {{ .Release.Name }}-aks +spec: + fluentbit: + disableKubernetesFilter: true + extraVolumeMounts: + - source: {{ $logPath }} + destination: {{ $logPath }} + readOnly: true + inputTail: + Tag: "aks" + Path: {{ $logPath }} +{{- end -}} +{{- if .Values.additionalLoggingSources.aks.enabled }} +{{- include "logging-operator.logging" (list . "logging-operator.logging.aks") -}} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/eks/logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/eks/logging.yaml new file mode 100644 index 0000000000..2ba7860b13 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/eks/logging.yaml @@ -0,0 +1,19 @@ +{{- define "logging-operator.logging.eks" -}} +{{- $logPath := "/var/log/messages" -}} +metadata: + name: {{ .Release.Name }}-eks +spec: + fluentbit: + disableKubernetesFilter: true + extraVolumeMounts: + - source: {{ $logPath }} + destination: {{ $logPath }} + readOnly: true + inputTail: + Tag: "eks" + Path: {{ $logPath }} + Parser: "syslog" +{{- end -}} +{{- if .Values.additionalLoggingSources.eks.enabled }} +{{- include "logging-operator.logging" (list . "logging-operator.logging.eks") -}} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/gke/logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/gke/logging.yaml new file mode 100644 index 0000000000..6c834b12e5 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/gke/logging.yaml @@ -0,0 +1,18 @@ +{{- define "logging-operator.logging.gke" -}} +{{- $logPath := "/var/log/kube-proxy.log" -}} +metadata: + name: {{ .Release.Name }}-gke +spec: + fluentbit: + disableKubernetesFilter: true + extraVolumeMounts: + - source: {{ $logPath }} + destination: {{ $logPath }} + readOnly: true + inputTail: + Tag: "gke" + Path: {{ $logPath }} +{{- end -}} +{{- if .Values.additionalLoggingSources.gke.enabled }} +{{- include "logging-operator.logging" (list . "logging-operator.logging.gke") -}} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/configmap.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/configmap.yaml new file mode 100644 index 0000000000..aa454c8adf --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/configmap.yaml @@ -0,0 +1,57 @@ +{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-k3s + labels: +{{ include "logging-operator.labels" . | indent 4 }} +data: + fluent-bit.conf: | + [SERVICE] + Flush 1 + Grace 5 + Daemon Off + Log_Level info + Coro_Stack_Size 24576 + Parsers_File parsers.conf + + [INPUT] + Name systemd + Tag k3s + Path {{ .Values.systemdLogPath }} + Systemd_Filter _SYSTEMD_UNIT=k3s.service + {{- if .Values.additionalLoggingSources.k3s.stripUnderscores }} + Strip_Underscores On + {{- end }} + Systemd_Filter _SYSTEMD_UNIT=k3s-agent.service + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser klog + Reserve_Data On + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser rancher + Reserve_Data On + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser etcd + Reserve_Data On + + [OUTPUT] + Name forward + Match * + Host {{ .Release.Name }}-root-fluentd.{{ .Release.Namespace }}.svc + Port 24240 + Retry_Limit False + parsers.conf: | +{{ include "logging-operator.parsers" . | indent 4 }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/daemonset.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/daemonset.yaml new file mode 100644 index 0000000000..e80c2b1c8b --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/daemonset.yaml @@ -0,0 +1,110 @@ +{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: "{{ .Release.Name }}-k3s-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + selector: + matchLabels: + name: {{ .Release.Name }}-k3s-journald-aggregator + template: + metadata: + annotations: + checksum/config: {{ include (print $.Template.BasePath "/loggings/k3s/configmap.yaml") . | sha256sum }} + name: "{{ .Release.Name }}-k3s-journald-aggregator" + namespace: "{{ .Release.Namespace }}" + labels: + name: {{ .Release.Name }}-k3s-journald-aggregator + spec: + containers: + - name: fluentbit + image: "{{ template "logging-operator.fluentbitImage" . }}" + {{- if .Values.global.seLinux.enabled }} + securityContext: + seLinuxOptions: + type: rke_logreader_t + {{- end }} + volumeMounts: + - mountPath: /fluent-bit/etc/ + name: config + - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} + name: journal + readOnly: true + - mountPath: /etc/machine-id + name: machine-id + readOnly: true + {{- with .Values.tolerations }} + tolerations: {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: "{{ .Release.Name }}-k3s-journald-aggregator" + volumes: + - name: config + configMap: + name: "{{ .Release.Name }}-k3s" + - name: journal + hostPath: + path: {{ .Values.systemdLogPath | default "/var/log/journal" }} + - name: machine-id + hostPath: + path: /etc/machine-id +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "{{ .Release.Name }}-k3s-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +{{- if .Values.global.cattle.psp.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: "{{ .Release.Name }}-k3s-journald-aggregator" +rules: + - apiGroups: + - policy + resourceNames: + - "{{ .Release.Name }}-k3s-journald-aggregator" + resources: + - podsecuritypolicies + verbs: + - use +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: "{{ .Release.Name }}-k3s-journald-aggregator" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: "{{ .Release.Name }}-k3s-journald-aggregator" +subjects: + - kind: ServiceAccount + name: "{{ .Release.Name }}-k3s-journald-aggregator" +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: "{{ .Release.Name }}-k3s-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + allowPrivilegeEscalation: false + fsGroup: + rule: RunAsAny + readOnlyRootFilesystem: true + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - configMap + - emptyDir + - secret + - hostPath +{{- end }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml new file mode 100644 index 0000000000..963cf3ac43 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml @@ -0,0 +1,19 @@ +{{- define "logging-operator.logging.k3s-openrc" -}} +{{- $logPath := "/var/log/k3s.log" -}} +metadata: + name: {{ .Release.Name }}-k3s +spec: + fluentbit: + disableKubernetesFilter: true + extraVolumeMounts: + - source: {{ $logPath }} + destination: {{ $logPath }} + readOnly: true + inputTail: + Tag: "k3s" + Path: {{ $logPath }} + Path_Key: filename +{{- end -}} +{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} +{{- include "logging-operator.logging" (list . "logging-operator.logging.k3s-openrc") -}} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/kube-audit/logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/kube-audit/logging.yaml new file mode 100644 index 0000000000..fcac111bd2 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/kube-audit/logging.yaml @@ -0,0 +1,25 @@ +{{- define "logging-operator.logging.kube-audit" -}} +metadata: + name: {{ .Release.Name }}-kube-audit +spec: + {{- if .Values.additionalLoggingSources.kubeAudit.loggingRef }} + loggingRef: {{ .Values.additionalLoggingSources.kubeAudit.loggingRef }} + {{- end }} + fluentbit: + disableKubernetesFilter: true + extraVolumeMounts: + - source: {{ template "kubeAuditPathPrefix" . }} + destination: "/kube-audit-logs" + readOnly: true + inputTail: + Tag: {{ .Values.additionalLoggingSources.kubeAudit.fluentbit.logTag }} + Path: /kube-audit-logs/{{ template "kubeAuditFilename" . }} + Parser: json + {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations) (.Values.additionalLoggingSources.kubeAudit.fluentbit.tolerations)) }} + tolerations: {{- toYaml . | nindent 6 }} + {{- end }} + nodeSelector: {{ include "controlplaneSelector" . | nindent 6 }} +{{- end -}} +{{- if .Values.additionalLoggingSources.kubeAudit.enabled }} +{{- include "logging-operator.logging" (list . "logging-operator.logging.kube-audit") -}} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/configmap.yaml new file mode 100644 index 0000000000..252572a4ef --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/configmap.yaml @@ -0,0 +1,29 @@ +{{- if .Values.additionalLoggingSources.rke.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-rke + labels: +{{ include "logging-operator.labels" . | indent 4 }} +data: + fluent-bit.conf: | + [SERVICE] + Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} + Parsers_File parsers.conf + + [INPUT] + Tag rke + Name tail + Path_Key filename + Parser docker + DB /tail-db/tail-containers-state.db + Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} + Path /var/lib/rancher/rke/log/*.log + + [OUTPUT] + Name forward + Match * + Host {{ .Release.Name }}-root-fluentd.{{ .Release.Namespace }}.svc + Port 24240 + Retry_Limit False +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/daemonset.yaml new file mode 100644 index 0000000000..cc39a5cc49 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke/daemonset.yaml @@ -0,0 +1,122 @@ +{{- if .Values.additionalLoggingSources.rke.enabled }} +{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: "{{ .Release.Name }}-rke-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + selector: + matchLabels: + name: {{ .Release.Name }}-rke-aggregator + template: + metadata: + name: "{{ .Release.Name }}-rke-aggregator" + namespace: "{{ .Release.Namespace }}" + labels: + name: {{ .Release.Name }}-rke-aggregator + spec: + containers: + - name: fluentbit + image: "{{ template "logging-operator.fluentbitImage" . }}" + volumeMounts: + - mountPath: /var/lib/rancher/rke/log/ + name: indir + - mountPath: {{ $containers }} + name: containers + - mountPath: /tail-db + name: positiondb + - mountPath: /fluent-bit/etc/fluent-bit.conf + name: config + subPath: fluent-bit.conf + {{- if .Values.global.seLinux.enabled }} + securityContext: + seLinuxOptions: + type: rke_logreader_t + {{- end }} + volumes: + - name: indir + hostPath: + path: /var/lib/rancher/rke/log/ + type: DirectoryOrCreate + - name: containers + hostPath: + path: {{ $containers }} + type: DirectoryOrCreate + - name: positiondb + emptyDir: {} + - name: config + configMap: + name: "{{ .Release.Name }}-rke" + serviceAccountName: "{{ .Release.Name }}-rke-aggregator" + {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} + {{- with $total_tolerations }} + tolerations: {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: {{- toYaml . | nindent 8 }} + {{- end }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "{{ .Release.Name }}-rke-aggregator" + namespace: "{{ .Release.Namespace }}" +{{- if .Values.global.cattle.psp.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: "{{ .Release.Name }}-rke-aggregator" +rules: + - apiGroups: + - policy + resourceNames: + - "{{ .Release.Name }}-rke-aggregator" + resources: + - podsecuritypolicies + verbs: + - use +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: "{{ .Release.Name }}-rke-aggregator" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: "{{ .Release.Name }}-rke-aggregator" +subjects: + - kind: ServiceAccount + name: "{{ .Release.Name }}-rke-aggregator" +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: "{{ .Release.Name }}-rke-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + allowPrivilegeEscalation: false + allowedHostPaths: + - pathPrefix: {{ $containers }} + readOnly: false + - pathPrefix: /var/lib/rancher/rke/log/ + readOnly: false + - pathPrefix: /var/lib/rancher/logging/ + readOnly: false + fsGroup: + rule: RunAsAny + readOnlyRootFilesystem: true + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - configMap + - emptyDir + - secret + - hostPath +{{- end }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/configmap.yaml new file mode 100644 index 0000000000..3ca20be226 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/configmap.yaml @@ -0,0 +1,69 @@ +{{- if .Values.additionalLoggingSources.rke2.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-rke2 + labels: +{{ include "logging-operator.labels" . | indent 4 }} +data: + fluent-bit.conf: | + [SERVICE] + Flush 1 + Grace 5 + Daemon Off + Log_Level info + Coro_Stack_Size 24576 + Parsers_File parsers.conf + + [INPUT] + Name systemd + Tag rke2 + Path {{ .Values.systemdLogPath }} + Systemd_Filter _SYSTEMD_UNIT=rke2-server.service + Systemd_Filter _SYSTEMD_UNIT=rke2-agent.service + {{- if .Values.additionalLoggingSources.rke2.stripUnderscores }} + Strip_Underscores On + {{- end }} + + [INPUT] + Name tail + Tag rke2 + Path /var/lib/rancher/rke2/agent/logs/kubelet.log + + [FILTER] + Name parser + Match * + Key_Name log + Parser klog + Reserve_Data On + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser klog + Reserve_Data On + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser rancher + Reserve_Data On + + [FILTER] + Name parser + Match * + Key_Name MESSAGE + Parser etcd + Reserve_Data On + + [OUTPUT] + Name forward + Match * + Host {{ .Release.Name }}-root-fluentd.{{ .Release.Namespace }}.svc + Port 24240 + Retry_Limit False + parsers.conf: | +{{ include "logging-operator.parsers" . | indent 4 }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/daemonset.yaml new file mode 100644 index 0000000000..ddc30f8893 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/rke2/daemonset.yaml @@ -0,0 +1,116 @@ +{{- if .Values.additionalLoggingSources.rke2.enabled }} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: "{{ .Release.Name }}-rke2-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + selector: + matchLabels: + name: {{ .Release.Name }}-rke2-journald-aggregator + template: + metadata: + annotations: + checksum/config: {{ include (print $.Template.BasePath "/loggings/rke2/configmap.yaml") . | sha256sum }} + name: "{{ .Release.Name }}-rke2-journald-aggregator" + namespace: "{{ .Release.Namespace }}" + labels: + name: {{ .Release.Name }}-rke2-journald-aggregator + spec: + containers: + - name: fluentbit + image: "{{ template "logging-operator.fluentbitImage" . }}" + {{- if .Values.global.seLinux.enabled }} + securityContext: + seLinuxOptions: + type: rke_logreader_t + {{- end }} + volumeMounts: + - mountPath: /fluent-bit/etc/ + name: config + - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} + name: journal + readOnly: true + - mountPath: "/var/lib/rancher/rke2/agent/logs/kubelet.log" + name: kubelet + readOnly: true + - mountPath: /etc/machine-id + name: machine-id + readOnly: true + {{- with .Values.tolerations }} + tolerations: {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: "{{ .Release.Name }}-rke2-journald-aggregator" + volumes: + - name: config + configMap: + name: "{{ .Release.Name }}-rke2" + - name: journal + hostPath: + path: {{ .Values.systemdLogPath | default "/var/log/journal" }} + - name: kubelet + hostPath: + path: "/var/lib/rancher/rke2/agent/logs/kubelet.log" + - name: machine-id + hostPath: + path: /etc/machine-id +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "{{ .Release.Name }}-rke2-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +{{- if .Values.global.cattle.psp.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: "{{ .Release.Name }}-rke2-journald-aggregator" +rules: + - apiGroups: + - policy + resourceNames: + - "{{ .Release.Name }}-rke2-journald-aggregator" + resources: + - podsecuritypolicies + verbs: + - use +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: "{{ .Release.Name }}-rke2-journald-aggregator" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: "{{ .Release.Name }}-rke2-journald-aggregator" +subjects: + - kind: ServiceAccount + name: "{{ .Release.Name }}-rke2-journald-aggregator" +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: "{{ .Release.Name }}-rke2-journald-aggregator" + namespace: "{{ .Release.Namespace }}" +spec: + allowPrivilegeEscalation: false + fsGroup: + rule: RunAsAny + readOnlyRootFilesystem: true + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - configMap + - emptyDir + - secret + - hostPath +{{- end }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/root/logging.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/root/logging.yaml new file mode 100644 index 0000000000..d88159106d --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/loggings/root/logging.yaml @@ -0,0 +1,82 @@ +{{- define "logging-operator.logging.root" -}} +{{- $containerLogPath := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} +metadata: + name: "{{ .Release.Name }}-root" +spec: + {{- if (include "windowsEnabled" .) }} + nodeAgents: + - name: win-agent + profile: windows + nodeAgentFluentbit: + daemonSet: + spec: + template: + spec: + containers: + - image: {{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }} + name: fluent-bit + tls: + enabled: {{ .Values.nodeAgents.tls.enabled | default false }} + {{- if .Values.additionalLoggingSources.rke.enabled }} + - name: win-agent-rke + profile: windows + nodeAgentFluentbit: + filterKubernetes: + Kube_Tag_Prefix: "{{ template "windowsKubernetesFilter" . }}.var.lib.rancher.rke.log." + inputTail: + Path: "{{ template "windowsPathPrefix" . }}/var/lib/rancher/rke/log" + {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} + Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} + Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} + Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Multiline_Flush }} + Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} + {{- end }} + {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} + Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} + {{- end }} + extraVolumeMounts: + - source: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" + destination: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" + readOnly: true + daemonSet: + spec: + template: + spec: + containers: + - image: "{{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }}" + name: fluent-bit + tls: + enabled: {{ .Values.nodeAgents.tls.enabled | default false }} + {{- end }} + {{- end }} + fluentbit: + {{- if .Values.global.dockerRootDirectory }} + mountPath: {{ $containerLogPath }} + extraVolumeMounts: + - source: {{ $containerLogPath }} + destination: {{ $containerLogPath }} + readOnly: true + {{- end }} + {{- if (include "requireFilterKubernetes" .) }} + filterKubernetes: + {{- if .Values.fluentbit.filterKubernetes.Merge_Log }} + Merge_Log: "{{ .Values.fluentbit.filterKubernetes.Merge_Log }}" + {{- end }} + {{- if .Values.fluentbit.filterKubernetes.Merge_Log_Key }} + Merge_Log_Key: "{{ .Values.fluentbit.filterKubernetes.Merge_Log_Key }}" + {{- end }} + {{- if .Values.fluentbit.filterKubernetes.Merge_Log_Trim }} + Merge_Log_Trim: "{{ .Values.fluentbit.filterKubernetes.Merge_Log_Trim }}" + {{- end }} + {{- if .Values.fluentbit.filterKubernetes.Merge_Parser }} + Merge_Parser: "{{ .Values.fluentbit.filterKubernetes.Merge_Parser }}" + {{- end }} + {{- end }} +{{- end -}} +{{- include "logging-operator.logging" (list . "logging-operator.logging.root") -}} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/psp.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/psp.yaml new file mode 100644 index 0000000000..e80bbc0dc7 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/psp.yaml @@ -0,0 +1,34 @@ +{{ if and .Values.global.cattle.psp.enabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: psp.logging-operator + namespace: {{ include "logging-operator.namespace" . }} + annotations: +{{- if .Values.rbac.psp.annotations }} +{{ toYaml .Values.rbac.psp.annotations | indent 4 }} +{{- end }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +spec: + readOnlyRootFilesystem: true + privileged: false + allowPrivilegeEscalation: false + runAsUser: + rule: MustRunAsNonRoot + fsGroup: + rule: MustRunAs + ranges: + - min: 1 + max: 65535 + supplementalGroups: + rule: MustRunAs + ranges: + - min: 1 + max: 65535 + seLinux: + rule: RunAsAny + volumes: + - secret + - configMap +{{ end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/service.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/service.yaml new file mode 100644 index 0000000000..f419ae2c48 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "logging-operator.fullname" . }} + namespace: {{ include "logging-operator.namespace" . }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +spec: + type: ClusterIP + {{- with .Values.http.service.clusterIP }} + clusterIP: {{ . }} + {{- end }} + ports: + - port: {{ .Values.http.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: {{ include "logging-operator.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceMonitor.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceMonitor.yaml new file mode 100644 index 0000000000..1bb762cde5 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceMonitor.yaml @@ -0,0 +1,30 @@ +{{ if .Values.monitoring.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "logging-operator.fullname" . }} + namespace: {{ include "logging-operator.namespace" . }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +{{- with .Values.monitoring.serviceMonitor.additionalLabels }} + {{- toYaml . | nindent 4 }} +{{- end }} +spec: + selector: + matchLabels: +{{ include "logging-operator.labels" . | indent 6 }} + endpoints: + - port: http + path: /metrics + {{- with .Values.monitoring.serviceMonitor.metricsRelabelings }} + metricRelabelings: + {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.monitoring.serviceMonitor.relabelings }} + relabelings: + {{- toYaml . | nindent 4 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ include "logging-operator.namespace" . }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceaccount.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceaccount.yaml new file mode 100644 index 0000000000..bb97cf1084 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/serviceaccount.yaml @@ -0,0 +1,14 @@ +{{- if .Values.rbac.enabled }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "logging-operator.fullname" . }} + namespace: {{ include "logging-operator.namespace" . }} + labels: +{{ include "logging-operator.labels" . | indent 4 }} +{{- with .Values.serviceAccount.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/userroles.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/userroles.yaml new file mode 100644 index 0000000000..f4136b09a4 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/userroles.yaml @@ -0,0 +1,35 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: "logging-admin" + labels: + rbac.authorization.k8s.io/aggregate-to-admin: "true" +rules: + - apiGroups: + - "logging.banzaicloud.io" + resources: + - flows + - outputs + verbs: + - "*" +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: "logging-view" + labels: + rbac.authorization.k8s.io/aggregate-to-admin: "true" + rbac.authorization.k8s.io/aggregate-to-view: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" +rules: + - apiGroups: + - "logging.banzaicloud.io" + resources: + - flows + - outputs + - clusterflows + - clusteroutputs + verbs: + - get + - list + - watch diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install-crd.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install-crd.yaml new file mode 100644 index 0000000000..77fc8047c9 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install-crd.yaml @@ -0,0 +1,20 @@ +#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} +# {{- $found := dict -}} +# {{- set $found "logging-extensions.banzaicloud.io/v1alpha1/EventTailer" false -}} +# {{- set $found "logging-extensions.banzaicloud.io/v1alpha1/HostTailer" false -}} +# {{- set $found "logging.banzaicloud.io/v1alpha1/ClusterFlow" false -}} +# {{- set $found "logging.banzaicloud.io/v1alpha1/ClusterOutput" false -}} +# {{- set $found "logging.banzaicloud.io/v1alpha1/Flow" false -}} +# {{- set $found "logging.banzaicloud.io/v1alpha1/Logging" false -}} +# {{- set $found "logging.banzaicloud.io/v1alpha1/Output" false -}} +# {{- range .Capabilities.APIVersions -}} +# {{- if hasKey $found (toString .) -}} +# {{- set $found (toString .) true -}} +# {{- end -}} +# {{- end -}} +# {{- range $_, $exists := $found -}} +# {{- if (eq $exists false) -}} +# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} +# {{- end -}} +# {{- end -}} +#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install.yaml new file mode 100644 index 0000000000..bd624cc4b4 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-install.yaml @@ -0,0 +1,5 @@ +#{{- if .Values.global.dockerRootDirectory }} +#{{- if or (hasSuffix "/containers" .Values.global.dockerRootDirectory) (hasSuffix "/" .Values.global.dockerRootDirectory) }} +#{{- required "global.dockerRootDirectory must not end with suffix: '/' or '/containers'" "" -}} +#{{- end }} +#{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-psp-install.yaml b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-psp-install.yaml new file mode 100644 index 0000000000..a30c59d3b7 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/templates/validate-psp-install.yaml @@ -0,0 +1,7 @@ +#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} +#{{- if .Values.global.cattle.psp.enabled }} +#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} +#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} +#{{- end }} +#{{- end }} +#{{- end }} diff --git a/charts/rancher-logging/102.0.3+up3.17.10/values.yaml b/charts/rancher-logging/102.0.3+up3.17.10/values.yaml new file mode 100644 index 0000000000..40b3dbac12 --- /dev/null +++ b/charts/rancher-logging/102.0.3+up3.17.10/values.yaml @@ -0,0 +1,240 @@ +# Default values for logging-operator. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: rancher/mirrored-banzaicloud-logging-operator + tag: 3.17.10 + pullPolicy: IfNotPresent + +env: [] +volumes: [] +volumeMounts: [] + +extraArgs: + - -enable-leader-election=true +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" +namespaceOverride: "" + +## Pod custom labels +## +podLabels: {} + +annotations: {} + +## Deploy CRDs used by Logging Operator. +## +createCustomResource: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +nodeSelector: + kubernetes.io/os: linux + +tolerations: + - key: cattle.io/os + operator: "Equal" + value: "linux" + effect: NoSchedule + +affinity: {} + +http: + # http listen port number + port: 8080 + # Service definition for query http service + service: + type: ClusterIP + clusterIP: None + # Annotations to query http service + annotations: {} + # Labels to query http service + labels: {} + +rbac: + enabled: true + psp: + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' + seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default' + ## Specify pod annotations + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl + + + +## SecurityContext holds pod-level security attributes and common container settings. +## This defaults to non-root user with uid 1000 and gid 2000. *v1.PodSecurityContext false +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ +## +podSecurityContext: {} +# runAsNonRoot: true +# runAsUser: 1000 +# fsGroup: 2000 +securityContext: {} +# allowPrivilegeEscalation: false +# readOnlyRootFilesystem: true + # capabilities: + # drop: ["ALL"] + +## Operator priorityClassName +## +priorityClassName: {} + +monitoring: + # Create a Prometheus Operator ServiceMonitor object + serviceMonitor: + enabled: false + additionalLabels: {} + metricRelabelings: [] + relabelings: [] + +serviceAccount: + annotations: {} + +################################### +# Rancher Logging Operator Values # +################################### + +# Enable debug to use fluent-bit images that allow exec +debug: false + +# Disable persistent volumes for buffers +disablePvc: true + +# If your additional logging sources collect logs from systemd configure the systemd log path here +systemdLogPath: "/run/log/journal" + +global: + cattle: + systemDefaultRegistry: "" + # Uncomment the below two lines to either enable or disable Windows logging. If this chart is + # installed via the Rancher UI, it will set this value to "true" if the cluster is a Windows + # cluster. In that scenario, if you would like to disable Windows logging on Windows clusters, + # set the value below to "false". + # windows: + # enabled: true + psp: + enabled: false + + # Change the "dockerRootDirectory" if the default Docker directory has changed. + dockerRootDirectory: "" + + rkeWindowsPathPrefix: "c:\\" + + seLinux: + enabled: false + +images: + config_reloader: + repository: rancher/mirrored-jimmidyson-configmap-reload + tag: v0.4.0 + fluentbit: + repository: rancher/mirrored-fluent-fluent-bit + tag: 2.2.0 + nodeagent_fluentbit: + os: "windows" + repository: rancher/fluent-bit + tag: 1.8.9 + fluentbit_debug: + repository: rancher/mirrored-fluent-fluent-bit + tag: 2.2.0-debug + fluentd: + repository: rancher/mirrored-banzaicloud-fluentd + tag: v1.14.6-alpine-5 + +additionalLoggingSources: + rke: + enabled: false + fluentbit: + log_level: "info" + mem_buffer_limit: "5MB" + rke2: + enabled: false + stripUnderscores: false + k3s: + enabled: false + container_engine: "systemd" + stripUnderscores: false + aks: + enabled: false + eks: + enabled: false + gke: + enabled: false + kubeAudit: + auditFilename: "" + enabled: false + pathPrefix: "" + fluentbit: + logTag: kube-audit + tolerations: + - key: node-role.kubernetes.io/controlplane + value: "true" + effect: NoSchedule + - key: node-role.kubernetes.io/etcd + value: "true" + effect: NoExecute + +# configures node agent options for windows node agents +nodeAgents: + tls: + enabled: false + +# These settings apply to every Logging CR, including vendor Logging CRs enabled in "additionalLoggingSources". +# Changing these affects every Logging CR installed. +fluentd: + bufferStorageVolume: {} + livenessProbe: + tcpSocket: + port: 24240 + initialDelaySeconds: 30 + periodSeconds: 15 + nodeSelector: {} + resources: {} + tolerations: {} + env: [] +fluentbit: + inputTail: + Buffer_Chunk_Size: "" + Buffer_Max_Size: "" + Mem_Buf_Limit: "" + Multiline_Flush: "" + Skip_Long_Lines: "" + resources: {} + tolerations: + - key: node-role.kubernetes.io/controlplane + value: "true" + effect: NoSchedule + - key: node-role.kubernetes.io/etcd + value: "true" + effect: NoExecute + filterKubernetes: + Merge_Log: "" + Merge_Log_Key: "" + Merge_Log_Trim: "" + Merge_Parser: "" + +# DO NOT SET THIS UNLESS YOU KNOW WHAT YOU ARE DOING. +# Setting fields on this object can break rancher logging or cause unexpected behavior. It is intended to be used if you +# need to configure functionality not exposed by rancher logging. It is highly recommended you check the `app-readme.md` +# for the functionality you need before modifying this object. + +# this object will be merged with every logging CR created by this chart. Any fields that collide with fields from the +# settings above will be overridden. Any fields that collide with fields set in the files in `templates/loggings` will +# be ignored. diff --git a/index.yaml b/index.yaml index 1a66c91605..ba0e5f5ffa 100755 --- a/index.yaml +++ b/index.yaml @@ -11199,6 +11199,35 @@ entries: - assets/rancher-kube-state-metrics/rancher-kube-state-metrics-2.13.101.tgz version: 2.13.101 rancher-logging: + - annotations: + catalog.cattle.io/auto-install: rancher-logging-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/deploys-on-os: windows + catalog.cattle.io/display-name: Logging + catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: cattle-logging-system + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' + catalog.cattle.io/release-name: rancher-logging + catalog.cattle.io/type: cluster-tool + catalog.cattle.io/ui-component: logging + catalog.cattle.io/upstream-version: 3.17.10 + apiVersion: v1 + appVersion: 3.17.10 + created: "2024-01-22T15:48:50.930525525-05:00" + description: Collects and filter logs using highly configurable CRDs. Powered + by Banzai Cloud Logging Operator. + digest: d77608c22beb2f97e6c9a87b57d3104da3d2ec042f3ffa022c20fc8666bd9c51 + icon: https://charts.rancher.io/assets/logos/logging.svg + keywords: + - logging + - monitoring + - security + name: rancher-logging + urls: + - assets/rancher-logging/rancher-logging-102.0.3+up3.17.10.tgz + version: 102.0.3+up3.17.10 - annotations: catalog.cattle.io/auto-install: rancher-logging-crd=match catalog.cattle.io/certified: rancher @@ -11661,6 +11690,20 @@ entries: - assets/rancher-logging/rancher-logging-3.6.000.tgz version: 3.6.000 rancher-logging-crd: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-logging-system + catalog.cattle.io/release-name: rancher-logging-crd + apiVersion: v1 + created: "2024-01-22T15:48:50.974030848-05:00" + description: Installs the CRDs for rancher-logging. + digest: 711f3d014d1222ff02a17c81b2cf08d5e8fcf8d81c62fe65b4bbf461d3174354 + name: rancher-logging-crd + type: application + urls: + - assets/rancher-logging-crd/rancher-logging-crd-102.0.3+up3.17.10.tgz + version: 102.0.3+up3.17.10 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/hidden: "true" From 167a29504c1c5f96c6164a7b33a7164ea5750fde Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 24 Jan 2024 11:01:13 -0500 Subject: [PATCH 04/13] update versions in release.yaml Signed-off-by: Alexandre Lamarre --- release.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release.yaml b/release.yaml index c4cf7f54bc..e795f0580e 100644 --- a/release.yaml +++ b/release.yaml @@ -1,4 +1,4 @@ -rancher-backup: - - 102.0.3+up3.1.3 -rancher-backup-crd: - - 102.0.3+up3.1.3 +rancher-logging: + - 102.0.3+up3.17.10 +rancher-logging-crd: + - 102.0.3+up3.17.10 From 67a0dccc879118605422c37226e2766fb2c69ab3 Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 17 Jan 2024 11:59:31 -0500 Subject: [PATCH 05/13] rancher monitoring support kubernetes 1.27 for up40.1.2 Signed-off-by: Alexandre Lamarre --- .../generated-changes/exclude/Chart.lock | 12 ------------ .../generated-changes/patch/Chart.yaml.patch | 2 +- .../rancher-monitoring/package.yaml | 2 +- 3 files changed, 2 insertions(+), 14 deletions(-) delete mode 100644 packages/rancher-monitoring/rancher-monitoring/generated-changes/exclude/Chart.lock diff --git a/packages/rancher-monitoring/rancher-monitoring/generated-changes/exclude/Chart.lock b/packages/rancher-monitoring/rancher-monitoring/generated-changes/exclude/Chart.lock deleted file mode 100644 index a64284c9ca..0000000000 --- a/packages/rancher-monitoring/rancher-monitoring/generated-changes/exclude/Chart.lock +++ /dev/null @@ -1,12 +0,0 @@ -dependencies: -- name: kube-state-metrics - repository: https://prometheus-community.github.io/helm-charts - version: 4.18.0 -- name: prometheus-node-exporter - repository: https://prometheus-community.github.io/helm-charts - version: 4.2.0 -- name: grafana - repository: https://grafana.github.io/helm-charts - version: 6.38.7 -digest: sha256:69eca03206a900ca144f320e52cc0c2fe5fa3bd1de7a2fb3cf2b76fbb3499e7d -generated: "2022-09-23T14:40:29.408741006+02:00" diff --git a/packages/rancher-monitoring/rancher-monitoring/generated-changes/patch/Chart.yaml.patch b/packages/rancher-monitoring/rancher-monitoring/generated-changes/patch/Chart.yaml.patch index 0e92dbb9d7..d62bd0d138 100644 --- a/packages/rancher-monitoring/rancher-monitoring/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-monitoring/rancher-monitoring/generated-changes/patch/Chart.yaml.patch @@ -8,7 +8,7 @@ + catalog.cattle.io/certified: rancher + catalog.cattle.io/deploys-on-os: windows + catalog.cattle.io/display-name: Monitoring -+ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.27.0-0' ++ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: cattle-monitoring-system + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/provides-gvr: monitoring.coreos.com.prometheus/v1 diff --git a/packages/rancher-monitoring/rancher-monitoring/package.yaml b/packages/rancher-monitoring/rancher-monitoring/package.yaml index 00471ebcad..73b9b571a8 100644 --- a/packages/rancher-monitoring/rancher-monitoring/package.yaml +++ b/packages/rancher-monitoring/rancher-monitoring/package.yaml @@ -1,7 +1,7 @@ url: https://github.com/prometheus-community/helm-charts.git subdirectory: charts/kube-prometheus-stack commit: f0e1cb7c070f556146c2833dbd132f7a321ffa45 -version: 102.0.2 +version: 102.0.3 additionalCharts: - workingDir: charts-crd crdOptions: From 12738d33febbd1c0db8627457793d5970c4984ed Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 24 Jan 2024 14:14:25 -0500 Subject: [PATCH 06/13] rancher project monitoring support kubernetes 1.27 Signed-off-by: Alexandre Lamarre --- .../generated-changes/patch/Chart.yaml.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rancher-monitoring/rancher-project-monitoring/generated-changes/patch/Chart.yaml.patch b/packages/rancher-monitoring/rancher-project-monitoring/generated-changes/patch/Chart.yaml.patch index d5aed576e8..7f958fc450 100644 --- a/packages/rancher-monitoring/rancher-project-monitoring/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-monitoring/rancher-project-monitoring/generated-changes/patch/Chart.yaml.patch @@ -4,7 +4,7 @@ catalog.cattle.io/certified: rancher catalog.cattle.io/display-name: Project Monitoring catalog.cattle.io/hidden: "true" -+ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.27.0-0' ++ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0' catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' catalog.cattle.io/release-name: rancher-project-monitoring From a8c49b920c4ff4718fba967fbb2371bd99a80bb2 Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 24 Jan 2024 14:26:45 -0500 Subject: [PATCH 07/13] make charts Signed-off-by: Alexandre Lamarre --- ...ancher-monitoring-crd-102.0.3+up40.1.2.tgz | Bin 0 -> 387132 bytes .../rancher-monitoring-102.0.3+up40.1.2.tgz | Bin 0 -> 406091 bytes ...ncher-project-monitoring-3.0.0+up0.3.3.tgz | Bin 124823 -> 124826 bytes .../102.0.3+up40.1.2/Chart.yaml | 10 + .../102.0.3+up40.1.2/README.md | 24 + .../crd-manifest/crd-alertmanagerconfigs.yaml | 4475 +++++++++ .../crd-manifest/crd-alertmanagers.yaml | 6779 +++++++++++++ .../crd-manifest/crd-podmonitors.yaml | 663 ++ .../crd-manifest/crd-probes.yaml | 704 ++ .../crd-manifest/crd-prometheuses.yaml | 8801 +++++++++++++++++ .../crd-manifest/crd-prometheusrules.yaml | 98 + .../crd-manifest/crd-servicemonitors.yaml | 684 ++ .../crd-manifest/crd-thanosrulers.yaml | 6431 ++++++++++++ .../102.0.3+up40.1.2/files/crd-manifest.tgz | Bin 0 -> 191646 bytes .../102.0.3+up40.1.2/templates/_helpers.tpl | 50 + .../102.0.3+up40.1.2/templates/jobs.yaml | 152 + .../102.0.3+up40.1.2/templates/manifest.yaml | 8 + .../102.0.3+up40.1.2/templates/rbac.yaml | 76 + .../templates/validate-psp-install.yaml | 7 + .../102.0.3+up40.1.2/values.yaml | 17 + .../102.0.3+up40.1.2/.helmignore | 28 + .../102.0.3+up40.1.2/CHANGELOG.md | 47 + .../102.0.3+up40.1.2/CONTRIBUTING.md | 12 + .../102.0.3+up40.1.2/Chart.yaml | 128 + .../102.0.3+up40.1.2/README.md | 739 ++ .../102.0.3+up40.1.2/app-README.md | 46 + .../charts/grafana/.helmignore | 23 + .../charts/grafana/Chart.yaml | 29 + .../102.0.3+up40.1.2/charts/grafana/README.md | 574 ++ .../grafana/dashboards/custom-dashboard.json | 1 + .../charts/grafana/templates/NOTES.txt | 54 + .../charts/grafana/templates/_helpers.tpl | 214 + .../charts/grafana/templates/_pod.tpl | 895 ++ .../charts/grafana/templates/clusterrole.yaml | 25 + .../grafana/templates/clusterrolebinding.yaml | 24 + .../configmap-dashboard-provider.yaml | 29 + .../charts/grafana/templates/configmap.yaml | 117 + .../templates/dashboards-json-configmap.yaml | 35 + .../charts/grafana/templates/deployment.yaml | 50 + .../grafana/templates/extra-manifests.yaml | 4 + .../grafana/templates/headless-service.yaml | 22 + .../charts/grafana/templates/hpa.yaml | 21 + .../templates/image-renderer-deployment.yaml | 123 + .../image-renderer-network-policy.yaml | 73 + .../templates/image-renderer-service.yaml | 33 + .../charts/grafana/templates/ingress.yaml | 78 + .../grafana/templates/networkpolicy.yaml | 52 + .../grafana/templates/nginx-config.yaml | 94 + .../templates/poddisruptionbudget.yaml | 22 + .../grafana/templates/podsecuritypolicy.yaml | 45 + .../charts/grafana/templates/pvc.yaml | 35 + .../charts/grafana/templates/role.yaml | 32 + .../charts/grafana/templates/rolebinding.yaml | 25 + .../charts/grafana/templates/secret-env.yaml | 14 + .../charts/grafana/templates/secret.yaml | 26 + .../charts/grafana/templates/service.yaml | 55 + .../grafana/templates/serviceaccount.yaml | 14 + .../grafana/templates/servicemonitor.yaml | 58 + .../charts/grafana/templates/statefulset.yaml | 56 + .../templates/tests/test-configmap.yaml | 17 + .../tests/test-podsecuritypolicy.yaml | 29 + .../grafana/templates/tests/test-role.yaml | 14 + .../templates/tests/test-rolebinding.yaml | 17 + .../templates/tests/test-serviceaccount.yaml | 9 + .../charts/grafana/templates/tests/test.yaml | 51 + .../charts/grafana/values.yaml | 1088 ++ .../charts/hardenedKubelet/.helmignore | 23 + .../charts/hardenedKubelet/Chart.yaml | 14 + .../charts/hardenedKubelet/README.md | 82 + .../hardenedKubelet/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/hardenedKubelet/values.yaml | 146 + .../charts/hardenedNodeExporter/.helmignore | 23 + .../charts/hardenedNodeExporter/Chart.yaml | 14 + .../charts/hardenedNodeExporter/README.md | 82 + .../templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/hardenedNodeExporter/values.yaml | 146 + .../charts/k3sServer/.helmignore | 23 + .../charts/k3sServer/Chart.yaml | 14 + .../charts/k3sServer/README.md | 82 + .../charts/k3sServer/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../k3sServer/templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../k3sServer/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/k3sServer/values.yaml | 146 + .../charts/kube-state-metrics/.helmignore | 21 + .../charts/kube-state-metrics/Chart.yaml | 28 + .../charts/kube-state-metrics/README.md | 68 + .../kube-state-metrics/templates/NOTES.txt | 10 + .../kube-state-metrics/templates/_helpers.tpl | 111 + .../templates/clusterrolebinding.yaml | 20 + .../templates/deployment.yaml | 172 + .../templates/kubeconfig-secret.yaml | 12 + .../kube-state-metrics/templates/pdb.yaml | 18 + .../templates/podsecuritypolicy.yaml | 39 + .../templates/psp-clusterrole.yaml | 19 + .../templates/psp-clusterrolebinding.yaml | 16 + .../kube-state-metrics/templates/role.yaml | 193 + .../templates/rolebinding.yaml | 24 + .../kube-state-metrics/templates/service.yaml | 41 + .../templates/serviceaccount.yaml | 15 + .../templates/servicemonitor.yaml | 86 + .../templates/stsdiscovery-role.yaml | 26 + .../templates/stsdiscovery-rolebinding.yaml | 17 + .../charts/kube-state-metrics/values.yaml | 271 + .../kubeAdmControllerManager/.helmignore | 23 + .../kubeAdmControllerManager/Chart.yaml | 14 + .../charts/kubeAdmControllerManager/README.md | 82 + .../templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../kubeAdmControllerManager/values.yaml | 146 + .../charts/kubeAdmEtcd/.helmignore | 23 + .../charts/kubeAdmEtcd/Chart.yaml | 14 + .../charts/kubeAdmEtcd/README.md | 82 + .../charts/kubeAdmEtcd/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../kubeAdmEtcd/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/kubeAdmEtcd/values.yaml | 146 + .../charts/kubeAdmProxy/.helmignore | 23 + .../charts/kubeAdmProxy/Chart.yaml | 14 + .../charts/kubeAdmProxy/README.md | 82 + .../kubeAdmProxy/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/kubeAdmProxy/values.yaml | 146 + .../charts/kubeAdmScheduler/.helmignore | 23 + .../charts/kubeAdmScheduler/Chart.yaml | 14 + .../charts/kubeAdmScheduler/README.md | 82 + .../kubeAdmScheduler/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/kubeAdmScheduler/values.yaml | 146 + .../charts/prometheus-adapter/.helmignore | 21 + .../charts/prometheus-adapter/Chart.yaml | 27 + .../charts/prometheus-adapter/README.md | 138 + .../prometheus-adapter/templates/NOTES.txt | 9 + .../prometheus-adapter/templates/_helpers.tpl | 113 + .../templates/certmanager.yaml | 76 + .../cluster-role-binding-auth-delegator.yaml | 20 + .../cluster-role-binding-resource-reader.yaml | 20 + .../cluster-role-resource-reader.yaml | 24 + .../templates/configmap.yaml | 97 + .../templates/custom-metrics-apiservice.yaml | 32 + ...stom-metrics-cluster-role-binding-hpa.yaml | 24 + .../custom-metrics-cluster-role.yaml | 17 + .../templates/deployment.yaml | 147 + .../external-metrics-apiservice.yaml | 32 + ...rnal-metrics-cluster-role-binding-hpa.yaml | 20 + .../external-metrics-cluster-role.yaml | 21 + .../prometheus-adapter/templates/pdb.yaml | 23 + .../prometheus-adapter/templates/psp.yaml | 66 + .../resource-metrics-apiservice.yaml | 32 + ...resource-metrics-cluster-role-binding.yaml | 20 + .../resource-metrics-cluster-role.yaml | 23 + .../templates/role-binding-auth-reader.yaml | 21 + .../prometheus-adapter/templates/secret.yaml | 17 + .../prometheus-adapter/templates/service.yaml | 27 + .../templates/serviceaccount.yaml | 18 + .../charts/prometheus-adapter/values.yaml | 217 + .../prometheus-node-exporter/.helmignore | 21 + .../prometheus-node-exporter/Chart.yaml | 25 + .../charts/prometheus-node-exporter/README.md | 77 + .../templates/NOTES.txt | 15 + .../templates/_helpers.tpl | 136 + .../templates/daemonset.yaml | 234 + .../templates/endpoints.yaml | 17 + .../templates/psp-clusterrole.yaml | 15 + .../templates/psp-clusterrolebinding.yaml | 17 + .../templates/psp.yaml | 50 + .../templates/service.yaml | 22 + .../templates/serviceaccount.yaml | 14 + .../templates/servicemonitor.yaml | 61 + .../prometheus-node-exporter/values.yaml | 252 + .../charts/rke2ControllerManager/.helmignore | 23 + .../charts/rke2ControllerManager/Chart.yaml | 14 + .../charts/rke2ControllerManager/README.md | 82 + .../templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rke2ControllerManager/values.yaml | 146 + .../charts/rke2Etcd/.helmignore | 23 + .../charts/rke2Etcd/Chart.yaml | 14 + .../charts/rke2Etcd/README.md | 82 + .../charts/rke2Etcd/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../rke2Etcd/templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../rke2Etcd/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rke2Etcd/values.yaml | 146 + .../charts/rke2IngressNginx/.helmignore | 23 + .../charts/rke2IngressNginx/Chart.yaml | 14 + .../charts/rke2IngressNginx/README.md | 82 + .../rke2IngressNginx/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rke2IngressNginx/values.yaml | 146 + .../charts/rke2Proxy/.helmignore | 23 + .../charts/rke2Proxy/Chart.yaml | 14 + .../charts/rke2Proxy/README.md | 82 + .../charts/rke2Proxy/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../rke2Proxy/templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../rke2Proxy/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rke2Proxy/values.yaml | 146 + .../charts/rke2Scheduler/.helmignore | 23 + .../charts/rke2Scheduler/Chart.yaml | 14 + .../charts/rke2Scheduler/README.md | 82 + .../rke2Scheduler/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rke2Scheduler/values.yaml | 146 + .../charts/rkeControllerManager/.helmignore | 23 + .../charts/rkeControllerManager/Chart.yaml | 14 + .../charts/rkeControllerManager/README.md | 82 + .../templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rkeControllerManager/values.yaml | 146 + .../charts/rkeEtcd/.helmignore | 23 + .../charts/rkeEtcd/Chart.yaml | 14 + .../102.0.3+up40.1.2/charts/rkeEtcd/README.md | 82 + .../charts/rkeEtcd/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../rkeEtcd/templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../rkeEtcd/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rkeEtcd/values.yaml | 146 + .../charts/rkeIngressNginx/.helmignore | 23 + .../charts/rkeIngressNginx/Chart.yaml | 14 + .../charts/rkeIngressNginx/README.md | 82 + .../rkeIngressNginx/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rkeIngressNginx/values.yaml | 146 + .../charts/rkeProxy/.helmignore | 23 + .../charts/rkeProxy/Chart.yaml | 14 + .../charts/rkeProxy/README.md | 82 + .../charts/rkeProxy/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../rkeProxy/templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../rkeProxy/templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rkeProxy/values.yaml | 146 + .../charts/rkeScheduler/.helmignore | 23 + .../charts/rkeScheduler/Chart.yaml | 14 + .../charts/rkeScheduler/README.md | 82 + .../rkeScheduler/templates/_helpers.tpl | 131 + .../templates/pushprox-clients-rbac.yaml | 85 + .../templates/pushprox-clients.yaml | 153 + .../templates/pushprox-proxy-rbac.yaml | 68 + .../templates/pushprox-proxy.yaml | 53 + .../templates/pushprox-servicemonitor.yaml | 45 + .../templates/validate-install-crd.yaml | 14 + .../templates/validate-psp-install.yaml | 7 + .../charts/rkeScheduler/values.yaml | 146 + .../charts/windowsExporter/.helmignore | 23 + .../charts/windowsExporter/Chart.yaml | 15 + .../charts/windowsExporter/README.md | 17 + .../scripts/check-wins-version.ps1 | 20 + .../windowsExporter/scripts/proxy-entry.ps1 | 11 + .../charts/windowsExporter/scripts/run.ps1 | 78 + .../windowsExporter/templates/_helpers.tpl | 113 + .../windowsExporter/templates/configmap.yaml | 10 + .../windowsExporter/templates/daemonset.yaml | 77 + .../templates/prometheusrule.yaml | 13 + .../windowsExporter/templates/rbac.yaml | 81 + .../windowsExporter/templates/service.yaml | 15 + .../templates/servicemonitor.yaml | 41 + .../charts/windowsExporter/values.yaml | 52 + .../files/ingress-nginx/nginx.json | 1445 +++ .../request-handling-performance.json | 963 ++ .../cluster/rancher-cluster-nodes.json | 793 ++ .../rancher/cluster/rancher-cluster.json | 776 ++ .../rancher/home/rancher-default-home.json | 1290 +++ .../files/rancher/k8s/rancher-etcd-nodes.json | 687 ++ .../files/rancher/k8s/rancher-etcd.json | 669 ++ .../k8s/rancher-k8s-components-nodes.json | 527 + .../rancher/k8s/rancher-k8s-components.json | 519 + .../rancher/nodes/rancher-node-detail.json | 805 ++ .../files/rancher/nodes/rancher-node.json | 792 ++ .../performance/performance-debugging.json | 1707 ++++ .../rancher/pods/rancher-pod-containers.json | 636 ++ .../files/rancher/pods/rancher-pod.json | 636 ++ .../workloads/rancher-workload-pods.json | 652 ++ .../rancher/workloads/rancher-workload.json | 652 ++ .../delete-workloads-with-old-labels.sh | 14 + .../102.0.3+up40.1.2/templates/NOTES.txt | 4 + .../102.0.3+up40.1.2/templates/_helpers.tpl | 384 + .../templates/alertmanager/alertmanager.yaml | 170 + .../templates/alertmanager/extrasecret.yaml | 20 + .../templates/alertmanager/ingress.yaml | 77 + .../alertmanager/ingressperreplica.yaml | 67 + .../alertmanager/podDisruptionBudget.yaml | 21 + .../templates/alertmanager/psp-role.yaml | 21 + .../alertmanager/psp-rolebinding.yaml | 18 + .../templates/alertmanager/psp.yaml | 45 + .../templates/alertmanager/secret.yaml | 33 + .../templates/alertmanager/service.yaml | 53 + .../alertmanager/serviceaccount.yaml | 20 + .../alertmanager/servicemonitor.yaml | 55 + .../alertmanager/serviceperreplica.yaml | 49 + .../templates/exporters/core-dns/service.yaml | 24 + .../exporters/core-dns/servicemonitor.yaml | 49 + .../kube-api-server/servicemonitor.yaml | 52 + .../kube-controller-manager/endpoints.yaml | 22 + .../kube-controller-manager/service.yaml | 29 + .../servicemonitor.yaml | 60 + .../templates/exporters/kube-dns/service.yaml | 28 + .../exporters/kube-dns/servicemonitor.yaml | 62 + .../exporters/kube-etcd/endpoints.yaml | 20 + .../exporters/kube-etcd/service.yaml | 27 + .../exporters/kube-etcd/servicemonitor.yaml | 66 + .../exporters/kube-proxy/endpoints.yaml | 20 + .../exporters/kube-proxy/service.yaml | 27 + .../exporters/kube-proxy/servicemonitor.yaml | 54 + .../exporters/kube-scheduler/endpoints.yaml | 22 + .../exporters/kube-scheduler/service.yaml | 29 + .../kube-scheduler/servicemonitor.yaml | 60 + .../kube-state-metrics/validate.yaml | 7 + .../exporters/kubelet/servicemonitor.yaml | 229 + .../exporters/node-exporter/validate.yaml | 3 + .../grafana/configmap-dashboards.yaml | 24 + .../grafana/configmaps-datasources.yaml | 63 + .../alertmanager-overview.yaml | 616 ++ .../grafana/dashboards-1.14/apiserver.yaml | 1772 ++++ .../dashboards-1.14/cluster-total.yaml | 1882 ++++ .../dashboards-1.14/controller-manager.yaml | 1196 +++ .../grafana/dashboards-1.14/etcd.yaml | 1229 +++ .../dashboards-1.14/grafana-overview.yaml | 635 ++ .../grafana/dashboards-1.14/k8s-coredns.yaml | 1530 +++ .../k8s-resources-cluster.yaml | 3088 ++++++ .../k8s-resources-namespace.yaml | 2797 ++++++ .../dashboards-1.14/k8s-resources-node.yaml | 1026 ++ .../dashboards-1.14/k8s-resources-pod.yaml | 2469 +++++ .../k8s-resources-workload.yaml | 2024 ++++ .../k8s-resources-workloads-namespace.yaml | 2189 ++++ .../grafana/dashboards-1.14/kubelet.yaml | 2256 +++++ .../dashboards-1.14/namespace-by-pod.yaml | 1464 +++ .../namespace-by-workload.yaml | 1736 ++++ .../node-cluster-rsrc-use.yaml | 1063 ++ .../dashboards-1.14/node-rsrc-use.yaml | 1089 ++ .../grafana/dashboards-1.14/nodes-darwin.yaml | 1073 ++ .../grafana/dashboards-1.14/nodes.yaml | 1066 ++ .../persistentvolumesusage.yaml | 587 ++ .../grafana/dashboards-1.14/pod-total.yaml | 1228 +++ .../prometheus-remote-write.yaml | 1674 ++++ .../grafana/dashboards-1.14/prometheus.yaml | 1235 +++ .../grafana/dashboards-1.14/proxy.yaml | 1276 +++ .../grafana/dashboards-1.14/scheduler.yaml | 1118 +++ .../dashboards-1.14/workload-total.yaml | 1438 +++ .../templates/grafana/namespaces.yaml | 13 + .../job-patch/clusterrole.yaml | 33 + .../job-patch/clusterrolebinding.yaml | 20 + .../job-patch/job-createSecret.yaml | 69 + .../job-patch/job-patchWebhook.yaml | 70 + .../admission-webhooks/job-patch/psp.yaml | 47 + .../admission-webhooks/job-patch/role.yaml | 21 + .../job-patch/rolebinding.yaml | 21 + .../job-patch/serviceaccount.yaml | 17 + .../mutatingWebhookConfiguration.yaml | 42 + .../validatingWebhookConfiguration.yaml | 41 + .../prometheus-operator/certmanager.yaml | 57 + .../prometheus-operator/clusterrole.yaml | 81 + .../clusterrolebinding.yaml | 17 + .../prometheus-operator/deployment.yaml | 164 + .../prometheus-operator/psp-clusterrole.yaml | 20 + .../psp-clusterrolebinding.yaml | 17 + .../templates/prometheus-operator/psp.yaml | 45 + .../prometheus-operator/service.yaml | 58 + .../prometheus-operator/serviceaccount.yaml | 16 + .../prometheus-operator/servicemonitor.yaml | 54 + .../templates/prometheus/_rules.tpl | 36 + .../additionalAlertRelabelConfigs.yaml | 16 + .../additionalAlertmanagerConfigs.yaml | 16 + .../prometheus/additionalPrometheusRules.yaml | 43 + .../prometheus/additionalScrapeConfigs.yaml | 20 + .../templates/prometheus/clusterrole.yaml | 30 + .../prometheus/clusterrolebinding.yaml | 18 + .../templates/prometheus/csi-secret.yaml | 12 + .../templates/prometheus/extrasecret.yaml | 20 + .../templates/prometheus/ingress.yaml | 77 + .../prometheus/ingressThanosSidecar.yaml | 76 + .../prometheus/ingressperreplica.yaml | 67 + .../templates/prometheus/nginx-config.yaml | 68 + .../prometheus/podDisruptionBudget.yaml | 21 + .../templates/prometheus/podmonitors.yaml | 37 + .../templates/prometheus/prometheus.yaml | 388 + .../templates/prometheus/psp-clusterrole.yaml | 20 + .../prometheus/psp-clusterrolebinding.yaml | 18 + .../templates/prometheus/psp.yaml | 56 + .../rules-1.14/alertmanager.rules.yaml | 217 + .../rules-1.14/config-reloaders.yaml | 46 + .../templates/prometheus/rules-1.14/etcd.yaml | 296 + .../prometheus/rules-1.14/general.rules.yaml | 98 + .../prometheus/rules-1.14/k8s.rules.yaml | 173 + .../kube-apiserver-availability.rules.yaml | 136 + .../kube-apiserver-burnrate.rules.yaml | 328 + .../kube-apiserver-histogram.rules.yaml | 37 + .../rules-1.14/kube-apiserver-slos.yaml | 115 + .../kube-prometheus-general.rules.yaml | 31 + .../kube-prometheus-node-recording.rules.yaml | 39 + .../rules-1.14/kube-scheduler.rules.yaml | 65 + .../rules-1.14/kube-state-metrics.yaml | 107 + .../prometheus/rules-1.14/kubelet.rules.yaml | 41 + .../rules-1.14/kubernetes-apps.yaml | 375 + .../rules-1.14/kubernetes-resources.yaml | 193 + .../rules-1.14/kubernetes-storage.yaml | 160 + .../kubernetes-system-apiserver.yaml | 128 + .../kubernetes-system-controller-manager.yaml | 47 + .../kubernetes-system-kube-proxy.yaml | 46 + .../rules-1.14/kubernetes-system-kubelet.yaml | 253 + .../kubernetes-system-scheduler.yaml | 46 + .../rules-1.14/kubernetes-system.yaml | 65 + .../rules-1.14/node-exporter.rules.yaml | 89 + .../prometheus/rules-1.14/node-exporter.yaml | 398 + .../prometheus/rules-1.14/node-network.yaml | 44 + .../prometheus/rules-1.14/node.rules.yaml | 55 + .../rules-1.14/prometheus-operator.yaml | 148 + .../prometheus/rules-1.14/prometheus.yaml | 448 + .../templates/prometheus/service.yaml | 64 + .../prometheus/serviceThanosSidecar.yaml | 39 + .../serviceThanosSidecarExternal.yaml | 46 + .../templates/prometheus/serviceaccount.yaml | 20 + .../templates/prometheus/servicemonitor.yaml | 52 + .../servicemonitorThanosSidecar.yaml | 51 + .../templates/prometheus/servicemonitors.yaml | 38 + .../prometheus/serviceperreplica.yaml | 49 + .../rancher-monitoring/clusterrole.yaml | 134 + .../rancher-monitoring/config-role.yaml | 48 + .../rancher-monitoring/dashboard-role.yaml | 47 + .../addons/ingress-nginx-dashboard.yaml | 18 + .../rancher/cluster-dashboards.yaml | 17 + .../dashboards/rancher/default-dashboard.yaml | 17 + .../dashboards/rancher/k8s-dashboards.yaml | 31 + .../dashboards/rancher/nodes-dashboards.yaml | 17 + .../rancher/performance-dashboards.yaml | 18 + .../dashboards/rancher/pods-dashboards.yaml | 17 + .../rancher/workload-dashboards.yaml | 17 + .../exporters/ingress-nginx/service.yaml | 27 + .../ingress-nginx/servicemonitor.yaml | 49 + .../exporters/rancher/servicemonitor.yaml | 58 + .../rancher-monitoring/hardened.yaml | 128 + .../rancher-monitoring/upgrade/configmap.yaml | 13 + .../rancher-monitoring/upgrade/job.yaml | 46 + .../rancher-monitoring/upgrade/rbac.yaml | 131 + .../templates/thanos-ruler/extrasecret.yaml | 20 + .../templates/thanos-ruler/ingress.yaml | 77 + .../thanos-ruler/podDisruptionBudget.yaml | 21 + .../templates/thanos-ruler/ruler.yaml | 168 + .../templates/thanos-ruler/service.yaml | 53 + .../thanos-ruler/serviceaccount.yaml | 20 + .../thanos-ruler/servicemonitor.yaml | 56 + .../templates/validate-install-crd.yaml | 21 + .../templates/validate-psp-install.yaml | 7 + .../102.0.3+up40.1.2/values.yaml | 4190 ++++++++ .../3.0.0+up0.3.3/Chart.yaml | 2 +- index.yaml | 152 +- release.yaml | 6 + 534 files changed, 120644 insertions(+), 4 deletions(-) create mode 100644 assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.3+up40.1.2.tgz create mode 100644 assets/rancher-monitoring/rancher-monitoring-102.0.3+up40.1.2.tgz create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/Chart.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/README.md create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-alertmanagerconfigs.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-alertmanagers.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-podmonitors.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-probes.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-prometheuses.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-prometheusrules.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-servicemonitors.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-thanosrulers.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/files/crd-manifest.tgz create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/templates/jobs.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/templates/manifest.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/templates/rbac.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.3+up40.1.2/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/CHANGELOG.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/CONTRIBUTING.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/app-README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/dashboards/custom-dashboard.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/_pod.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/configmap-dashboard-provider.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/dashboards-json-configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/extra-manifests.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/headless-service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/image-renderer-deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/image-renderer-network-policy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/image-renderer-service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/networkpolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/nginx-config.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/poddisruptionbudget.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/pvc.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/secret-env.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/statefulset.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test-configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test-podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test-serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/templates/tests/test.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/grafana/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedKubelet/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/hardenedNodeExporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/k3sServer/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/kubeconfig-secret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/pdb.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/stsdiscovery-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kube-state-metrics/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmEtcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmProxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/kubeAdmScheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/certmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/pdb.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-adapter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/daemonset.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/prometheus-node-exporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2ControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Etcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2IngressNginx/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Proxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rke2Scheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeEtcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeIngressNginx/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeProxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/rkeScheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/README.md create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/scripts/check-wins-version.ps1 create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/scripts/proxy-entry.ps1 create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/scripts/run.ps1 create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/daemonset.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/prometheusrule.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/charts/windowsExporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/ingress-nginx/nginx.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/ingress-nginx/request-handling-performance.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/cluster/rancher-cluster-nodes.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/cluster/rancher-cluster.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/home/rancher-default-home.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/k8s/rancher-etcd-nodes.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/k8s/rancher-etcd.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/k8s/rancher-k8s-components-nodes.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/k8s/rancher-k8s-components.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/nodes/rancher-node-detail.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/nodes/rancher-node.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/performance/performance-debugging.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/pods/rancher-pod-containers.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/pods/rancher-pod.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/workloads/rancher-workload-pods.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/rancher/workloads/rancher-workload.json create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/files/upgrade/scripts/delete-workloads-with-old-labels.sh create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/alertmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/ingressperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/psp-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/psp-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/alertmanager/serviceperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/core-dns/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/core-dns/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-api-server/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-controller-manager/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-controller-manager/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-controller-manager/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-dns/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-dns/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-etcd/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-etcd/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-etcd/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-proxy/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-proxy/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-proxy/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-scheduler/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-scheduler/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-scheduler/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kube-state-metrics/validate.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/kubelet/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/exporters/node-exporter/validate.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/configmap-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/configmaps-datasources.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/alertmanager-overview.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/apiserver.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/cluster-total.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/controller-manager.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/etcd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/grafana-overview.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-coredns.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-node.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/kubelet.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/namespace-by-pod.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/namespace-by-workload.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/node-rsrc-use.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/nodes-darwin.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/nodes.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/pod-total.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/scheduler.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/dashboards-1.14/workload-total.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/grafana/namespaces.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/certmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus-operator/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/_rules.tpl create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/additionalAlertRelabelConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/additionalAlertmanagerConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/additionalPrometheusRules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/additionalScrapeConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/csi-secret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/ingressThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/ingressperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/nginx-config.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/podmonitors.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/alertmanager.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/config-reloaders.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/etcd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/general.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/k8s.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kube-state-metrics.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubelet.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-apps.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-resources.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-storage.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/node-exporter.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/node-exporter.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/node-network.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/node.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/prometheus-operator.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/rules-1.14/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/serviceThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/serviceThanosSidecarExternal.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/servicemonitorThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/servicemonitors.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/prometheus/serviceperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/config-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboard-role.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/hardened.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/upgrade/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/upgrade/job.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/rancher-monitoring/upgrade/rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/ruler.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/service.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/thanos-ruler/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.3+up40.1.2/values.yaml diff --git a/assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.3+up40.1.2.tgz b/assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.3+up40.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a90f0efd0008491fa4c61e08b7b089ed0d0ee112 GIT binary patch literal 387132 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

8Pv#XqTUDn1_HOB=k>$Eje~UqX7V&4( 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 i(2g4{`k#FWsoT{QZ_rpwByjt{~ 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 b4`a&+TcyR}2&5z=1cKB(D|M33@+5x(u#_&X literal 0 HcmV?d00001 diff --git a/assets/rancher-project-monitoring/rancher-project-monitoring-3.0.0+up0.3.3.tgz b/assets/rancher-project-monitoring/rancher-project-monitoring-3.0.0+up0.3.3.tgz index 6687f738a6a786c9978e51cbc1fc891ace4c5c1c..14cc29cba662dd5fdf9a1ce1069d9b8ea31f2ccf 100644 GIT binary patch delta 119706 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%0Ateknq#d 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

Y}Db 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

W;U6&&;J-@DsKoxnK%l*{mwim8@e=;ClZ6Y` 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 v0.22.0 and takes precedence over Regex (deprecated) + if non-empty. + enum: + - '!=' + - = + - =~ + - '!~' + type: string + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression + (true). Deprecated as of AlertManager >= v0.22.0 where + a user should use MatchType instead. + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + targetMatch: + description: Matchers that have to be fulfilled in the alerts + to be muted. The operator enforces that the alert matches + the resource’s namespace. + items: + description: Matcher defines how to match on alert's labels. + properties: + matchType: + description: Match operation available with AlertManager + >= v0.22.0 and takes precedence over Regex (deprecated) + if non-empty. + enum: + - '!=' + - = + - =~ + - '!~' + type: string + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression + (true). Deprecated as of AlertManager >= v0.22.0 where + a user should use MatchType instead. + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + type: object + type: array + muteTimeIntervals: + description: List of MuteTimeInterval specifying when the routes should + be muted. + items: + description: MuteTimeInterval specifies the periods in time when + notifications will be muted + properties: + name: + description: Name of the time interval + type: string + timeIntervals: + description: TimeIntervals is a list of TimeInterval + items: + description: TimeInterval describes intervals of time + properties: + daysOfMonth: + description: DaysOfMonth is a list of DayOfMonthRange + items: + description: DayOfMonthRange is an inclusive range of + days of the month beginning at 1 + properties: + end: + description: End of the inclusive range + maximum: 31 + minimum: -31 + type: integer + start: + description: Start of the inclusive range + maximum: 31 + minimum: -31 + type: integer + type: object + type: array + months: + description: Months is a list of MonthRange + items: + description: MonthRange is an inclusive range of months + of the year beginning in January Months can be specified + by name (e.g 'January') by numerical month (e.g '1') + or as an inclusive range (e.g 'January:March', '1:3', + '1:March') + pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$) + type: string + type: array + times: + description: Times is a list of TimeRange + items: + description: TimeRange defines a start and end time + in 24hr format + properties: + endTime: + description: EndTime is the end time in 24hr format. + pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$) + type: string + startTime: + description: StartTime is the start time in 24hr + format. + pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$) + type: string + type: object + type: array + weekdays: + description: Weekdays is a list of WeekdayRange + items: + description: WeekdayRange is an inclusive range of days + of the week beginning on Sunday Days can be specified + by name (e.g 'Sunday') or as an inclusive range (e.g + 'Monday:Friday') + pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$) + type: string + type: array + years: + description: Years is a list of YearRange + items: + description: YearRange is an inclusive range of years + pattern: ^2\d{3}(?::2\d{3}|$) + type: string + type: array + type: object + type: array + type: object + type: array + receivers: + description: List of receivers. + items: + description: Receiver defines one or more notification integrations. + properties: + emailConfigs: + description: List of Email configurations. + items: + description: EmailConfig configures notifications via Email. + properties: + authIdentity: + description: The identity to use for authentication. + type: string + authPassword: + description: The secret's key that contains the password + to use for authentication. The secret needs to be in + the same namespace as the AlertmanagerConfig object + and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + authSecret: + description: The secret's key that contains the CRAM-MD5 + secret. The secret needs to be in the same namespace + as the AlertmanagerConfig object and accessible by the + Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + authUsername: + description: The username to use for authentication. + type: string + from: + description: The sender address. + type: string + headers: + description: Further headers email header key/value pairs. + Overrides any headers previously set by the notification + implementation. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + hello: + description: The hostname to identify to the SMTP server. + type: string + html: + description: The HTML body of the email notification. + type: string + requireTLS: + description: The SMTP TLS requirement. Note that Go does + not support unencrypted connections to remote SMTP endpoints. + type: boolean + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + smarthost: + description: The SMTP host and port through which emails + are sent. E.g. example.com:25 + type: string + text: + description: The text body of the email notification. + type: string + tlsConfig: + description: TLS configuration + properties: + ca: + description: Struct containing the CA cert to use + for the targets. + properties: + configMap: + description: ConfigMap containing data to use + for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for + the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert file + for the targets. + properties: + configMap: + description: ConfigMap containing data to use + for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for + the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file + for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + to: + description: The email address to send notifications to. + type: string + type: object + type: array + name: + description: Name of the receiver. Must be unique across all + items from the list. + minLength: 1 + type: string + opsgenieConfigs: + description: List of OpsGenie configurations. + items: + description: OpsGenieConfig configures notifications via OpsGenie. + See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config + properties: + actions: + description: Comma separated list of actions that will + be available for the alert. + type: string + apiKey: + description: The secret's key that contains the OpsGenie + API key. The secret needs to be in the same namespace + as the AlertmanagerConfig object and accessible by the + Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + apiURL: + description: The URL to send OpsGenie API requests to. + type: string + description: + description: Description of the incident. + type: string + details: + description: A set of arbitrary key/value pairs that provide + further detail about the incident. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + entity: + description: Optional field that can be used to specify + which domain alert is related to. + type: string + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + message: + description: Alert text limited to 130 characters. + type: string + note: + description: Additional alert note. + type: string + priority: + description: Priority level of alert. Possible values + are P1, P2, P3, P4, and P5. + type: string + responders: + description: List of responders responsible for notifications. + items: + description: OpsGenieConfigResponder defines a responder + to an incident. One of `id`, `name` or `username` + has to be defined. + properties: + id: + description: ID of the responder. + type: string + name: + description: Name of the responder. + type: string + type: + description: Type of responder. + enum: + - team + - teams + - user + - escalation + - schedule + minLength: 1 + type: string + username: + description: Username of the responder. + type: string + required: + - type + type: object + type: array + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + source: + description: Backlink to the sender of the notification. + type: string + tags: + description: Comma separated list of tags attached to + the notifications. + type: string + updateAlerts: + description: Whether to update message and description + of the alert in OpsGenie if it already exists By default, + the alert is never updated in OpsGenie, the new message + only appears in activity log. + type: boolean + type: object + type: array + pagerdutyConfigs: + description: List of PagerDuty configurations. + items: + description: PagerDutyConfig configures notifications via + PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config + properties: + class: + description: The class/type of the event. + type: string + client: + description: Client identification. + type: string + clientURL: + description: Backlink to the sender of notification. + type: string + component: + description: The part or component of the affected system + that is broken. + type: string + description: + description: Description of the incident. + type: string + details: + description: Arbitrary key/value pairs that provide further + detail about the incident. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + group: + description: A cluster or grouping of sources. + type: string + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + pagerDutyImageConfigs: + description: A list of image details to attach that provide + further detail about an incident. + items: + description: PagerDutyImageConfig attaches images to + an incident + properties: + alt: + description: Alt is the optional alternative text + for the image. + type: string + href: + description: Optional URL; makes the image a clickable + link. + type: string + src: + description: Src of the image being attached to + the incident + type: string + type: object + type: array + pagerDutyLinkConfigs: + description: A list of link details to attach that provide + further detail about an incident. + items: + description: PagerDutyLinkConfig attaches text links + to an incident + properties: + alt: + description: Text that describes the purpose of + the link, and can be used as the link's text. + type: string + href: + description: Href is the URL of the link to be attached + type: string + type: object + type: array + routingKey: + description: The secret's key that contains the PagerDuty + integration key (when using Events API v2). Either this + field or `serviceKey` needs to be defined. The secret + needs to be in the same namespace as the AlertmanagerConfig + object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + serviceKey: + description: The secret's key that contains the PagerDuty + service key (when using integration type "Prometheus"). + Either this field or `routingKey` needs to be defined. + The secret needs to be in the same namespace as the + AlertmanagerConfig object and accessible by the Prometheus + Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + severity: + description: Severity of the incident. + type: string + url: + description: The URL to send requests to. + type: string + type: object + type: array + pushoverConfigs: + description: List of Pushover configurations. + items: + description: PushoverConfig configures notifications via Pushover. + See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config + properties: + expire: + description: How long your notification will continue + to be retried for, unless the user acknowledges the + notification. + pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ + type: string + html: + description: Whether notification message is HTML or plain + text. + type: boolean + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + message: + description: Notification message. + type: string + priority: + description: Priority, see https://pushover.net/api#priority + type: string + retry: + description: How often the Pushover servers will send + the same notification to the user. Must be at least + 30 seconds. + pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + sound: + description: The name of one of the sounds supported by + device clients to override the user's default sound + choice + type: string + title: + description: Notification title. + type: string + token: + description: The secret's key that contains the registered + application’s API token, see https://pushover.net/apps. + The secret needs to be in the same namespace as the + AlertmanagerConfig object and accessible by the Prometheus + Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + url: + description: A supplementary URL shown alongside the message. + type: string + urlTitle: + description: A title for supplementary URL, otherwise + just the URL is shown + type: string + userKey: + description: The secret's key that contains the recipient + user’s user key. The secret needs to be in the same + namespace as the AlertmanagerConfig object and accessible + by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + type: object + type: array + slackConfigs: + description: List of Slack configurations. + items: + description: SlackConfig configures notifications via Slack. + See https://prometheus.io/docs/alerting/latest/configuration/#slack_config + properties: + actions: + description: A list of Slack actions that are sent with + each notification. + items: + description: SlackAction configures a single Slack action + that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields + and https://api.slack.com/docs/message-buttons for + more information. + properties: + confirm: + description: SlackConfirmationField protect users + from destructive actions or particularly distinguished + decisions by asking them to confirm their button + click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields + for more information. + properties: + dismissText: + type: string + okText: + type: string + text: + minLength: 1 + type: string + title: + type: string + required: + - text + type: object + name: + type: string + style: + type: string + text: + minLength: 1 + type: string + type: + minLength: 1 + type: string + url: + type: string + value: + type: string + required: + - text + - type + type: object + type: array + apiURL: + description: The secret's key that contains the Slack + webhook URL. The secret needs to be in the same namespace + as the AlertmanagerConfig object and accessible by the + Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + callbackId: + type: string + channel: + description: The channel or user to send notifications + to. + type: string + color: + type: string + fallback: + type: string + fields: + description: A list of Slack fields that are sent with + each notification. + items: + description: SlackField configures a single Slack field + that is sent with each notification. Each field must + contain a title, value, and optionally, a boolean + value to indicate if the field is short enough to + be displayed next to other fields designated as short. + See https://api.slack.com/docs/message-attachments#fields + for more information. + properties: + short: + type: boolean + title: + minLength: 1 + type: string + value: + minLength: 1 + type: string + required: + - title + - value + type: object + type: array + footer: + type: string + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + iconEmoji: + type: string + iconURL: + type: string + imageURL: + type: string + linkNames: + type: boolean + mrkdwnIn: + items: + type: string + type: array + pretext: + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + shortFields: + type: boolean + text: + type: string + thumbURL: + type: string + title: + type: string + titleLink: + type: string + username: + type: string + type: object + type: array + snsConfigs: + description: List of SNS configurations + items: + description: SNSConfig configures notifications via AWS SNS. + See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs + properties: + apiURL: + description: The SNS API URL i.e. https://sns.us-east-2.amazonaws.com. + If not specified, the SNS API URL from the SNS SDK will + be used. + type: string + attributes: + additionalProperties: + type: string + description: SNS message attributes. + type: object + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + message: + description: The message content of the SNS notification. + type: string + phoneNumber: + description: Phone number if message is delivered via + SMS in E.164 format. If you don't specify this value, + you must specify a value for the TopicARN or TargetARN. + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + sigv4: + description: Configures AWS's Signature Verification 4 + signing process to sign requests. + properties: + accessKey: + description: AccessKey is the AWS API key. If blank, + the environment variable `AWS_ACCESS_KEY_ID` is + used. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + profile: + description: Profile is the named AWS profile used + to authenticate. + type: string + region: + description: Region is the AWS region. If blank, the + region from the default credentials chain used. + type: string + roleArn: + description: RoleArn is the named AWS profile used + to authenticate. + type: string + secretKey: + description: SecretKey is the AWS API secret. If blank, + the environment variable `AWS_SECRET_ACCESS_KEY` + is used. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + subject: + description: Subject line when the message is delivered + to email endpoints. + type: string + targetARN: + description: The mobile platform endpoint ARN if message + is delivered via mobile notifications. If you don't + specify this value, you must specify a value for the + topic_arn or PhoneNumber. + type: string + topicARN: + description: SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic + If you don't specify this value, you must specify a + value for the PhoneNumber or TargetARN. + type: string + type: object + type: array + telegramConfigs: + description: List of Telegram configurations. + items: + description: TelegramConfig configures notifications via Telegram. + See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config + properties: + apiURL: + description: The Telegram API URL i.e. https://api.telegram.org. + If not specified, default API URL will be used. + type: string + botToken: + description: Telegram bot token The secret needs to be + in the same namespace as the AlertmanagerConfig object + and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + chatID: + description: The Telegram chat ID. + format: int64 + type: integer + disableNotifications: + description: Disable telegram notifications + type: boolean + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + message: + description: Message template + type: string + parseMode: + description: Parse mode for telegram message + enum: + - MarkdownV2 + - Markdown + - HTML + type: string + sendResolved: + description: Whether to notify about resolved alerts. + type: boolean + type: object + type: array + victoropsConfigs: + description: List of VictorOps configurations. + items: + description: VictorOpsConfig configures notifications via + VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config + properties: + apiKey: + description: The secret's key that contains the API key + to use when talking to the VictorOps API. The secret + needs to be in the same namespace as the AlertmanagerConfig + object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + apiUrl: + description: The VictorOps API URL. + type: string + customFields: + description: Additional custom fields for notification. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + entityDisplayName: + description: Contains summary of the alerted problem. + type: string + httpConfig: + description: The HTTP client's configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + messageType: + description: Describes the behavior of the alert (CRITICAL, + WARNING, INFO). + type: string + monitoringTool: + description: The monitoring tool the state message is + from. + type: string + routingKey: + description: A key used to map the alert to a team. + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + stateMessage: + description: Contains long explanation of the alerted + problem. + type: string + type: object + type: array + webhookConfigs: + description: List of webhook configurations. + items: + description: WebhookConfig configures notifications via a + generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config + properties: + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + maxAlerts: + description: Maximum number of alerts to be sent per webhook + message. When 0, all alerts are included. + format: int32 + minimum: 0 + type: integer + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + url: + description: The URL to send HTTP POST requests to. `urlSecret` + takes precedence over `url`. One of `urlSecret` and + `url` should be defined. + type: string + urlSecret: + description: The secret's key that contains the webhook + URL to send HTTP requests to. `urlSecret` takes precedence + over `url`. One of `urlSecret` and `url` should be defined. + The secret needs to be in the same namespace as the + AlertmanagerConfig object and accessible by the Prometheus + Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + type: object + type: array + wechatConfigs: + description: List of WeChat configurations. + items: + description: WeChatConfig configures notifications via WeChat. + See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config + properties: + agentID: + type: string + apiSecret: + description: The secret's key that contains the WeChat + API key. The secret needs to be in the same namespace + as the AlertmanagerConfig object and accessible by the + Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + apiURL: + description: The WeChat API URL. + type: string + corpID: + description: The corp id for authentication. + type: string + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for + the client. This is mutually exclusive with BasicAuth + and is only available starting from Alertmanager + v0.22+. + properties: + credentials: + description: The secret's key that contains the + credentials of the request + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, + BasicAuth takes precedence. + properties: + password: + description: The secret in the service monitor + namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor + namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. + The secret needs to be in the same namespace as + the AlertmanagerConfig object and accessible by + the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + followRedirects: + description: FollowRedirects specifies whether the + client should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch + a token for the targets. + properties: + clientId: + description: The secret or configmap containing + the OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 + client secret + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token + URL + type: object + scopes: + description: OAuth2 scopes used for the token + request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to + use for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert + file for the targets. + properties: + configMap: + description: ConfigMap containing data to + use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use + for the targets. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key + file for the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the + targets. + type: string + type: object + type: object + message: + description: API request data as defined by the WeChat + API. + type: string + messageType: + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + toParty: + type: string + toTag: + type: string + toUser: + type: string + type: object + type: array + required: + - name + type: object + type: array + route: + description: The Alertmanager route definition for alerts matching + the resource’s namespace. If present, it will be added to the generated + Alertmanager configuration as a first-level route. + properties: + continue: + description: Boolean indicating whether an alert should continue + matching subsequent sibling nodes. It will always be overridden + to true for the first-level route by the Prometheus operator. + type: boolean + groupBy: + description: List of labels to group by. Labels must not be repeated + (unique list). Special label "..." (aggregate by all possible + labels), if provided, must be the only element in the list. + items: + type: string + type: array + groupInterval: + description: 'How long to wait before sending an updated notification. + Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` + Example: "5m"' + type: string + groupWait: + description: 'How long to wait before sending the initial notification. + Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` + Example: "30s"' + type: string + matchers: + description: 'List of matchers that the alert’s labels should + match. For the first level route, the operator removes any existing + equality and regexp matcher on the `namespace` label and adds + a `namespace: ` matcher.' + items: + description: Matcher defines how to match on alert's labels. + properties: + matchType: + description: Match operation available with AlertManager + >= v0.22.0 and takes precedence over Regex (deprecated) + if non-empty. + enum: + - '!=' + - = + - =~ + - '!~' + type: string + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression + (true). Deprecated as of AlertManager >= v0.22.0 where + a user should use MatchType instead. + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + muteTimeIntervals: + description: 'Note: this comment applies to the field definition + above but appears below otherwise it gets included in the generated + manifest. CRD schema doesn''t support self-referential types + for now (see https://github.com/kubernetes/kubernetes/issues/62872). + We have to use an alternative type to circumvent the limitation. + The downside is that the Kube API can''t validate the data beyond + the fact that it is a valid JSON representation. MuteTimeIntervals + is a list of MuteTimeInterval names that will mute this route + when matched,' + items: + type: string + type: array + receiver: + description: Name of the receiver for this route. If not empty, + it should be listed in the `receivers` field. + type: string + repeatInterval: + description: 'How long to wait before repeating the last notification. + Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` + Example: "4h"' + type: string + routes: + description: Child routes. + items: + x-kubernetes-preserve-unknown-fields: true + type: array + type: object + type: object + required: + - spec + type: object + served: true + storage: true diff --git a/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-alertmanagers.yaml b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-alertmanagers.yaml new file mode 100644 index 0000000000..236f26b912 --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-alertmanagers.yaml @@ -0,0 +1,6779 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: alertmanagers.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: Alertmanager + listKind: AlertmanagerList + plural: alertmanagers + shortNames: + - am + singular: alertmanager + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The version of Alertmanager + jsonPath: .spec.version + name: Version + type: string + - description: The desired replicas number of Alertmanagers + jsonPath: .spec.replicas + name: Replicas + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Alertmanager describes an Alertmanager cluster. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: 'Specification of the desired behavior of the Alertmanager + cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + additionalPeers: + description: AdditionalPeers allows injecting a set of additional + Alertmanagers to peer with to form a highly available cluster. + items: + type: string + type: array + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the + pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the affinity expressions specified by + this field, but it may choose a node that violates one or + more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node matches + the corresponding matchExpressions; the node(s) with the + highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects (i.e. + is also a no-op). + properties: + preference: + description: A node selector term, associated with the + corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the corresponding + nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this + field are not met at scheduling time, the pod will not be + scheduled onto the node. If the affinity requirements specified + by this field cease to be met at some point during pod execution + (e.g. due to an update), the system may or may not try to + eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term matches + no objects. The requirements of them are ANDed. The + TopologySelectorTerm type implements a subset of the + NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. co-locate + this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the affinity expressions specified by + this field, but it may choose a node that violates one or + more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node has + pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces field. + null selector and null or empty namespaces list + means "this pod's namespace". An empty selector + ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding + podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this + field are not met at scheduling time, the pod will not be + scheduled onto the node. If the affinity requirements specified + by this field cease to be met at some point during pod execution + (e.g. due to a pod label update), the system may or may + not try to eventually evict the pod from its node. When + there are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all terms + must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is defined as running + on a node whose value of the label with key + matches that of any node on which a pod of the set of + pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied to the + union of the namespaces selected by this field and + the ones listed in the namespaces field. null selector + and null or empty namespaces list means "this pod's + namespace". An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list of namespace + names that the term applies to. The term is applied + to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. null or + empty namespaces list and null namespaceSelector means + "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where + co-located is defined as running on a node whose value + of the label with key topologyKey matches that of + any node on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules (e.g. + avoid putting this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the anti-affinity expressions specified + by this field, but it may choose a node that violates one + or more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node has + pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces field. + null selector and null or empty namespaces list + means "this pod's namespace". An empty selector + ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding + podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the anti-affinity requirements + specified by this field cease to be met at some point during + pod execution (e.g. due to a pod label update), the system + may or may not try to eventually evict the pod from its + node. When there are multiple elements, the lists of nodes + corresponding to each podAffinityTerm are intersected, i.e. + all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is defined as running + on a node whose value of the label with key + matches that of any node on which a pod of the set of + pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied to the + union of the namespaces selected by this field and + the ones listed in the namespaces field. null selector + and null or empty namespaces list means "this pod's + namespace". An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list of namespace + names that the term applies to. The term is applied + to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. null or + empty namespaces list and null namespaceSelector means + "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where + co-located is defined as running on a node whose value + of the label with key topologyKey matches that of + any node on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + alertmanagerConfigNamespaceSelector: + description: Namespaces to be selected for AlertmanagerConfig discovery. + If nil, only check own namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + alertmanagerConfigSelector: + description: AlertmanagerConfigs to be selected for to merge and configure + Alertmanager with. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + alertmanagerConfiguration: + description: 'EXPERIMENTAL: alertmanagerConfiguration specifies the + configuration of Alertmanager. If defined, it takes precedence over + the `configSecret` field. This field may change in future releases.' + properties: + global: + description: Defines the global parameters of the Alertmanager + configuration. + properties: + httpConfig: + description: HTTP client configuration. + properties: + authorization: + description: Authorization header configuration for the + client. This is mutually exclusive with BasicAuth and + is only available starting from Alertmanager v0.22+. + properties: + credentials: + description: The secret's key that contains the credentials + of the request + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults + to Bearer, Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth for the client. This is mutually + exclusive with Authorization. If both are defined, BasicAuth + takes precedence. + properties: + password: + description: The secret in the service monitor namespace + that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor namespace + that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer + token to be used by the client for authentication. The + secret needs to be in the same namespace as the Alertmanager + object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + followRedirects: + description: FollowRedirects specifies whether the client + should follow HTTP 3xx redirects. + type: boolean + oauth2: + description: OAuth2 client credentials used to fetch a + token for the targets. + properties: + clientId: + description: The secret or configmap containing the + OAuth2 client id + properties: + configMap: + description: ConfigMap containing data to use + for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for + the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 client + secret + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token URL + type: object + scopes: + description: OAuth2 scopes used for the token request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use + for the targets. + properties: + configMap: + description: ConfigMap containing data to use + for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for + the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert file + for the targets. + properties: + configMap: + description: ConfigMap containing data to use + for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for + the targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file + for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + resolveTimeout: + description: ResolveTimeout is the default value used by alertmanager + if the alert does not include EndsAt, after this time passes + it can declare the alert as resolved if it has not been + updated. This has no impact on alerts from Prometheus, as + they always include EndsAt. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + type: object + name: + description: The name of the AlertmanagerConfig resource which + is used to generate the Alertmanager configuration. It must + be defined in the same namespace as the Alertmanager object. + The operator will not enforce a `namespace` label for routes + and inhibition rules. + minLength: 1 + type: string + type: object + baseImage: + description: 'Base image that is used to deploy pods, without tag. + Deprecated: use ''image'' instead' + type: string + clusterAdvertiseAddress: + description: 'ClusterAdvertiseAddress is the explicit address to advertise + in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. + [1] RFC1918: https://tools.ietf.org/html/rfc1918' + type: string + clusterGossipInterval: + description: Interval between gossip attempts. + pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + clusterPeerTimeout: + description: Timeout for cluster peering. + pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + clusterPushpullInterval: + description: Interval between pushpull attempts. + pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + configMaps: + description: ConfigMaps is a list of ConfigMaps in the same namespace + as the Alertmanager object, which shall be mounted into the Alertmanager + Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. + items: + type: string + type: array + configSecret: + description: "ConfigSecret is the name of a Kubernetes Secret in the + same namespace as the Alertmanager object, which contains the configuration + for this Alertmanager instance. If empty, it defaults to 'alertmanager-'. + \n The Alertmanager configuration should be available under the + `alertmanager.yaml` key. Additional keys from the original secret + are copied to the generated secret. \n If either the secret or the + `alertmanager.yaml` key is missing, the operator provisions an Alertmanager + configuration with one empty receiver (effectively dropping alert + notifications)." + type: string + containers: + description: 'Containers allows injecting additional containers. This + is meant to allow adding an authentication proxy to an Alertmanager + pod. Containers described here modify an operator generated container + if they share the same name and modifications are done via a strategic + merge patch. The current container names are: `alertmanager` and + `config-reloader`. Overriding containers is entirely outside the + scope of what the maintainers will support and by doing so, you + accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run + within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. + The container image''s ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: + i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. + Cannot be updated. + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must be + a C_IDENTIFIER. All invalid keys will be reported as an event + when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take + precedence. Values defined by an Env with a duplicate key + will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set + of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap must be + defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each + key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management + to default or override container images in workload controllers + like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. + Defaults to Always if :latest tag is specified, or IfNotPresent + otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The Pod''s termination grace period + countdown begins before the PreStop hook is executed. + Regardless of the outcome of the handler, the container + will eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other management + of the container blocks until the hook completes or until + the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Not + specifying a port here DOES NOT prevent that port from being + exposed. Any port which is listening on the default "0.0.0.0" + address inside a container will be accessible from the network. + Modifying this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port in a + single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP + address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If + specified, this must be a valid port number, 0 < x < + 65536. If HostNetwork is specified, this must match + ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in a pod + must have a unique name. Name for the port that can + be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + securityContext: + description: 'SecurityContext defines the security options the + container should be run with. If set, the fields of SecurityContext + override the equivalent fields of PodSecurityContext. More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent process. + This bool directly controls if the no_new_privs flag will + be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN Note that this field cannot be set + when spec.os.name is windows.' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by + the container runtime. Note that this field cannot be + set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent to + root on the host. Defaults to false. Note that this field + cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount to + use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field cannot + be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root + filesystem. Default is false. Note that this field cannot + be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value specified + in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod & container + level, the container options override the pod options. + Note that this field cannot be set when spec.os.name is + windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile + must be preconfigured on the node to work. Must be + a descending path, relative to the kubelet's configured + seccomp profile location. Must only be set if type + is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - + a profile defined in a file on the node should be + used. RuntimeDefault - the container runtime default + profile should be used. Unconfined - no profile should + be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options from the PodSecurityContext + will be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is + linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. This field is + alpha-level and will only be honored by components + that enable the WindowsHostProcessContainers feature + flag. Setting this field without the feature flag + will result in errors when validating the Pod. All + of a Pod's containers must have the same effective + HostProcess value (it is not allowed to have a mix + of HostProcess containers and non-HostProcess containers). In + addition, if HostProcess is true then HostNetwork + must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully + initialized. If specified, no other probes are executed until + this completes successfully. If this probe fails, the Pod + will be restarted, just as if the livenessProbe failed. This + can be used to provide different probe parameters at the beginning + of a Pod''s lifecycle, when it might take a long time to load + data or warm a cache, than during steady-state operation. + This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer + for stdin in the container runtime. If this is not set, reads + from stdin in the container will always result in EOF. Default + is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the + stdin channel after it has been opened by a single attach. + When stdin is true the stdin stream will remain open across + multiple attach sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until the first client + attaches to stdin, and then remains open and accepts data + until the client disconnects, at which time stdin is closed + and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the + container''s termination message will be written is mounted + into the container''s filesystem. Message written is intended + to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. + The total message length across all containers will be limited + to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be + populated. File will use the contents of terminationMessagePath + to populate the container status message on both success and + failure. FallbackToLogsOnError will use the last chunk of + container log output if the termination message file is empty + and the container exited with an error. The log output is + limited to 2048 bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for + itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be + used by the container. + items: + description: volumeDevice describes a mapping of a raw block + device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container + that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. + Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the volume + should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are + propagated from the host to container and the other + way around. When not set, MountPropagationNone is used. + This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves similarly + to SubPath but environment variable references $(VAR_NAME) + are expanded using the container's environment. Defaults + to "" (volume's root). SubPathExpr and SubPath are mutually + exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which might + be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + externalUrl: + description: The external URL the Alertmanager instances will be available + under. This is necessary to generate correct URLs. This is necessary + if Alertmanager is not served from root of a DNS name. + type: string + forceEnableClusterMode: + description: ForceEnableClusterMode ensures Alertmanager does not + deactivate the cluster mode when running with a single replica. + Use case is e.g. spanning an Alertmanager cluster across Kubernetes + clusters with a single replica in each. + type: boolean + hostAliases: + description: Pods' hostAliases configuration + items: + description: HostAlias holds the mapping between IP and hostnames + that will be injected as an entry in the pod's hosts file. + properties: + hostnames: + description: Hostnames for the above IP address. + items: + type: string + type: array + ip: + description: IP address of the host file entry. + type: string + required: + - hostnames + - ip + type: object + type: array + x-kubernetes-list-map-keys: + - ip + x-kubernetes-list-type: map + image: + description: Image if specified has precedence over baseImage, tag + and sha combinations. Specifying the version is still necessary + to ensure the Prometheus Operator knows what version of Alertmanager + is being configured. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same + namespace to use for pulling prometheus and alertmanager images + from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + description: 'InitContainers allows adding initContainers to the pod + definition. Those can be used to e.g. fetch secrets for injection + into the Alertmanager configuration from external sources. Any errors + during the execution of an initContainer will lead to a restart + of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + Using initContainers for any use case other then secret fetching + is entirely outside the scope of what the maintainers will support + and by doing so, you accept that this behaviour may break at any + time without notice.' + items: + description: A single application container that you want to run + within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. + The container image''s ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: + i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. + Cannot be updated. + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must be + a C_IDENTIFIER. All invalid keys will be reported as an event + when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take + precedence. Values defined by an Env with a duplicate key + will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set + of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap must be + defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each + key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management + to default or override container images in workload controllers + like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. + Defaults to Always if :latest tag is specified, or IfNotPresent + otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The Pod''s termination grace period + countdown begins before the PreStop hook is executed. + Regardless of the outcome of the handler, the container + will eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other management + of the container blocks until the hook completes or until + the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Not + specifying a port here DOES NOT prevent that port from being + exposed. Any port which is listening on the default "0.0.0.0" + address inside a container will be accessible from the network. + Modifying this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port in a + single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP + address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If + specified, this must be a valid port number, 0 < x < + 65536. If HostNetwork is specified, this must match + ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in a pod + must have a unique name. Name for the port that can + be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + securityContext: + description: 'SecurityContext defines the security options the + container should be run with. If set, the fields of SecurityContext + override the equivalent fields of PodSecurityContext. More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent process. + This bool directly controls if the no_new_privs flag will + be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN Note that this field cannot be set + when spec.os.name is windows.' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by + the container runtime. Note that this field cannot be + set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent to + root on the host. Defaults to false. Note that this field + cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount to + use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field cannot + be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root + filesystem. Default is false. Note that this field cannot + be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value specified + in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod & container + level, the container options override the pod options. + Note that this field cannot be set when spec.os.name is + windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile + must be preconfigured on the node to work. Must be + a descending path, relative to the kubelet's configured + seccomp profile location. Must only be set if type + is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - + a profile defined in a file on the node should be + used. RuntimeDefault - the container runtime default + profile should be used. Unconfined - no profile should + be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options from the PodSecurityContext + will be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is + linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. This field is + alpha-level and will only be honored by components + that enable the WindowsHostProcessContainers feature + flag. Setting this field without the feature flag + will result in errors when validating the Pod. All + of a Pod's containers must have the same effective + HostProcess value (it is not allowed to have a mix + of HostProcess containers and non-HostProcess containers). In + addition, if HostProcess is true then HostNetwork + must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully + initialized. If specified, no other probes are executed until + this completes successfully. If this probe fails, the Pod + will be restarted, just as if the livenessProbe failed. This + can be used to provide different probe parameters at the beginning + of a Pod''s lifecycle, when it might take a long time to load + data or warm a cache, than during steady-state operation. + This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer + for stdin in the container runtime. If this is not set, reads + from stdin in the container will always result in EOF. Default + is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the + stdin channel after it has been opened by a single attach. + When stdin is true the stdin stream will remain open across + multiple attach sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until the first client + attaches to stdin, and then remains open and accepts data + until the client disconnects, at which time stdin is closed + and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the + container''s termination message will be written is mounted + into the container''s filesystem. Message written is intended + to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. + The total message length across all containers will be limited + to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be + populated. File will use the contents of terminationMessagePath + to populate the container status message on both success and + failure. FallbackToLogsOnError will use the last chunk of + container log output if the termination message file is empty + and the container exited with an error. The log output is + limited to 2048 bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for + itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be + used by the container. + items: + description: volumeDevice describes a mapping of a raw block + device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container + that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. + Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the volume + should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are + propagated from the host to container and the other + way around. When not set, MountPropagationNone is used. + This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves similarly + to SubPath but environment variable references $(VAR_NAME) + are expanded using the container's environment. Defaults + to "" (volume's root). SubPathExpr and SubPath are mutually + exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which might + be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + listenLocal: + description: ListenLocal makes the Alertmanager server listen on loopback, + so that it does not bind against the Pod IP. Note this is only for + the Alertmanager UI, not the gossip communication. + type: boolean + logFormat: + description: Log format for Alertmanager to be configured with. + enum: + - "" + - logfmt + - json + type: string + logLevel: + description: Log level for Alertmanager to be configured with. + enum: + - "" + - debug + - info + - warn + - error + type: string + minReadySeconds: + description: Minimum number of seconds for which a newly created pod + should be ready without any of its container crashing for it to + be considered available. Defaults to 0 (pod will be considered available + as soon as it is ready) This is an alpha field and requires enabling + StatefulSetMinReadySeconds feature gate. + format: int32 + type: integer + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + paused: + description: If set to true all actions on the underlying managed + objects are not goint to be performed, except for delete actions. + type: boolean + podMetadata: + description: PodMetadata configures Labels and Annotations which are + propagated to the alertmanager pods. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to + organize and categorize (scope and select) objects. May match + selectors of replication controllers and services. More info: + http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required + when creating resources, although some resources may allow a + client to request the generation of an appropriate name automatically. + Name is primarily intended for creation idempotence and configuration + definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + portName: + description: Port name used for the pods and governing service. This + defaults to web + type: string + priorityClassName: + description: Priority class assigned to the Pods + type: string + replicas: + description: Size is the expected size of the alertmanager cluster. + The controller will eventually make the size of the running cluster + equal to the expected size. + format: int32 + type: integer + resources: + description: Define resources requests and limits for single Pods. + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources + allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + retention: + default: 120h + description: Time duration Alertmanager shall retain data for. Default + is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` + (milliseconds seconds minutes hours). + pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + routePrefix: + description: The route prefix Alertmanager registers HTTP handlers + for. This is useful, if using ExternalURL and a proxy is rewriting + HTTP routes of a request, and the actual ExternalURL is still true, + but the server serves requests under a different route prefix. For + example for use with `kubectl proxy`. + type: string + secrets: + description: Secrets is a list of Secrets in the same namespace as + the Alertmanager object, which shall be mounted into the Alertmanager + Pods. The Secrets are mounted into /etc/alertmanager/secrets/. + items: + type: string + type: array + securityContext: + description: SecurityContext holds pod-level security attributes and + common container settings. This defaults to the default PodSecurityContext. + properties: + fsGroup: + description: "A special supplemental group that applies to all + containers in a pod. Some volume types allow the Kubelet to + change the ownership of that volume to be owned by the pod: + \n 1. The owning GID will be the FSGroup 2. The setgid bit is + set (new files created in the volume will be owned by FSGroup) + 3. The permission bits are OR'd with rw-rw---- \n If unset, + the Kubelet will not modify the ownership and permissions of + any volume. Note that this field cannot be set when spec.os.name + is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing + ownership and permission of the volume before being exposed + inside Pod. This field will only apply to volume types which + support fsGroup based ownership(and permissions). It will have + no effect on ephemeral volume types such as: secret, configmaps + and emptydir. Valid values are "OnRootMismatch" and "Always". + If not specified, "Always" is used. Note that this field cannot + be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. + Uses runtime default if unset. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence for that container. + Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to start + the container if it does. If unset or false, no such validation + will be performed. May also be set in SecurityContext. If set + in both SecurityContext and PodSecurityContext, the value specified + in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. + Defaults to user specified in image metadata if unspecified. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. Note that this field cannot + be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence for that container. + Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to + the container. + type: string + role: + description: Role is a SELinux role label that applies to + the container. + type: string + type: + description: Type is a SELinux type label that applies to + the container. + type: string + user: + description: User is a SELinux user label that applies to + the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this + pod. Note that this field cannot be set when spec.os.name is + windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile must be + preconfigured on the node to work. Must be a descending + path, relative to the kubelet's configured seccomp profile + location. Must only be set if type is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - a profile + defined in a file on the node should be used. RuntimeDefault + - the container runtime default profile should be used. + Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run + in each container, in addition to the container's primary GID. If + unspecified, no groups will be added to any container. Note + that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for + the pod. Pods with unsupported sysctls (by the container runtime) + might fail to launch. Note that this field cannot be set when + spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options within a container's SecurityContext + will be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named by + the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. This field is alpha-level + and will only be honored by components that enable the WindowsHostProcessContainers + feature flag. Setting this field without the feature flag + will result in errors when validating the Pod. All of a + Pod's containers must have the same effective HostProcess + value (it is not allowed to have a mix of HostProcess containers + and non-HostProcess containers). In addition, if HostProcess + is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + type: string + type: object + type: object + serviceAccountName: + description: ServiceAccountName is the name of the ServiceAccount + to use to run the Prometheus Pods. + type: string + sha: + description: 'SHA of Alertmanager container image to be deployed. + Defaults to the value of `version`. Similar to a tag, but the SHA + explicitly deploys an immutable container image. Version and Tag + are ignored if SHA is set. Deprecated: use ''image'' instead. The + image digest can be specified as part of the image URL.' + type: string + storage: + description: Storage is the definition of how storage will be used + by the Alertmanager instances. + properties: + disableMountSubPath: + description: 'Deprecated: subPath usage will be disabled by default + in a future release, this option will become unnecessary. DisableMountSubPath + allows to remove any subPath usage in volume mounts.' + type: boolean + emptyDir: + description: 'EmptyDirVolumeSource to be used by the Prometheus + StatefulSets. If specified, used in place of any volumeClaimTemplate. + More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' + properties: + medium: + description: 'medium represents what type of storage medium + should back this directory. The default is "" which means + to use the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'sizeLimit is the total amount of local storage + required for this EmptyDir volume. The size limit is also + applicable for memory medium. The maximum usage on memory + medium EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + description: 'EphemeralVolumeSource to be used by the Prometheus + StatefulSets. This is a beta field in k8s 1.21, for lower versions, + starting with k8s 1.19, it requires enabling the GenericEphemeralVolume + feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes' + properties: + volumeClaimTemplate: + description: "Will be used to create a stand-alone PVC to + provision the volume. The pod in which this EphemeralVolumeSource + is embedded will be the owner of the PVC, i.e. the PVC will + be deleted together with the pod. The name of the PVC will + be `-` where `` is the + name from the `PodSpec.Volumes` array entry. Pod validation + will reject the pod if the concatenated name is not valid + for a PVC (for example, too long). \n An existing PVC with + that name that is not owned by the pod will *not* be used + for the pod to avoid using an unrelated volume by mistake. + Starting the pod is then blocked until the unrelated PVC + is removed. If such a pre-created PVC is meant to be used + by the pod, the PVC has to updated with an owner reference + to the pod once the pod exists. Normally this should not + be necessary, but it may be useful when manually reconstructing + a broken cluster. \n This field is read-only and no changes + will be made by Kubernetes to the PVC after it has been + created. \n Required, must not be nil." + properties: + metadata: + description: May contain labels and annotations that will + be copied into the PVC when creating it. No other fields + are allowed and will be rejected during validation. + type: object + spec: + description: The specification for the PersistentVolumeClaim. + The entire content is copied unchanged into the PVC + that gets created from this template. The same fields + as in a PersistentVolumeClaim are also valid here. + properties: + accessModes: + description: 'accessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'dataSource field can be used to specify + either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) If the + provisioner or an external controller can support + the specified data source, it will create a new + volume based on the contents of the specified data + source. If the AnyVolumeDataSource feature gate + is enabled, this field will always have the same + contents as the DataSourceRef field.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is + required. + type: string + kind: + description: Kind is the type of resource being + referenced + type: string + name: + description: Name is the name of resource being + referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + description: 'dataSourceRef specifies the object from + which to populate the volume with data, if a non-empty + volume is desired. This may be any local object + from a non-empty API group (non core object) or + a PersistentVolumeClaim object. When this field + is specified, volume binding will only succeed if + the type of the specified object matches some installed + volume populator or dynamic provisioner. This field + will replace the functionality of the DataSource + field and as such if both fields are non-empty, + they must have the same value. For backwards compatibility, + both fields (DataSource and DataSourceRef) will + be set to the same value automatically if one of + them is empty and the other is non-empty. There + are two important differences between DataSource + and DataSourceRef: * While DataSource only allows + two specific types of objects, DataSourceRef allows + any non-core object, as well as PersistentVolumeClaim + objects. * While DataSource ignores disallowed values + (dropping them), DataSourceRef preserves all values, + and generates an error if a disallowed value is + specified. (Beta) Using this field requires the + AnyVolumeDataSource feature gate to be enabled.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is + required. + type: string + kind: + description: Kind is the type of resource being + referenced + type: string + name: + description: Name is the name of resource being + referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + description: 'resources represents the minimum resources + the volume should have. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is + omitted for a container, it defaults to Limits + if that is explicitly specified, otherwise to + an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + selector: + description: selector is a label query over volumes + to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement is + a selector that contains values, a key, and + an operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. This array + is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + description: 'storageClassName is the name of the + StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume + is required by the claim. Value of Filesystem is + implied when not included in claim spec. + type: string + volumeName: + description: volumeName is the binding reference to + the PersistentVolume backing this claim. + type: string + type: object + required: + - spec + type: object + type: object + volumeClaimTemplate: + description: A PVC spec to be used by the Prometheus StatefulSets. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST + resource this object represents. Servers may infer this + from the endpoint the client submits requests to. Cannot + be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + description: EmbeddedMetadata contains metadata relevant to + an EmbeddedResource. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be + used to organize and categorize (scope and select) objects. + May match selectors of replication controllers and services. + More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. + Is required when creating resources, although some resources + may allow a client to request the generation of an appropriate + name automatically. Name is primarily intended for creation + idempotence and configuration definition. Cannot be + updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + spec: + description: 'Spec defines the desired characteristics of + a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'accessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'dataSource field can be used to specify + either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) If the provisioner + or an external controller can support the specified + data source, it will create a new volume based on the + contents of the specified data source. If the AnyVolumeDataSource + feature gate is enabled, this field will always have + the same contents as the DataSourceRef field.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + description: 'dataSourceRef specifies the object from + which to populate the volume with data, if a non-empty + volume is desired. This may be any local object from + a non-empty API group (non core object) or a PersistentVolumeClaim + object. When this field is specified, volume binding + will only succeed if the type of the specified object + matches some installed volume populator or dynamic provisioner. + This field will replace the functionality of the DataSource + field and as such if both fields are non-empty, they + must have the same value. For backwards compatibility, + both fields (DataSource and DataSourceRef) will be set + to the same value automatically if one of them is empty + and the other is non-empty. There are two important + differences between DataSource and DataSourceRef: * + While DataSource only allows two specific types of objects, + DataSourceRef allows any non-core object, as well as + PersistentVolumeClaim objects. * While DataSource ignores + disallowed values (dropping them), DataSourceRef preserves + all values, and generates an error if a disallowed value + is specified. (Beta) Using this field requires the AnyVolumeDataSource + feature gate to be enabled.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + description: 'resources represents the minimum resources + the volume should have. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify resource + requirements that are lower than previous value but + must still be higher than capacity recorded in the status + field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + selector: + description: selector is a label query over volumes to + consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values + array must be non-empty. If the operator is + Exists or DoesNotExist, the values array must + be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + description: 'storageClassName is the name of the StorageClass + required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. + type: string + volumeName: + description: volumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + status: + description: 'Status represents the current information/status + of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'accessModes contains the actual access modes + the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: allocatedResources is the storage resource + within AllocatedResources tracks the capacity allocated + to a PVC. It may be larger than the actual capacity + when a volume expansion operation is requested. For + storage quota, the larger value from allocatedResources + and PVC.spec.resources is used. If allocatedResources + is not set, PVC.spec.resources alone is used for quota + calculation. If a volume expansion capacity request + is lowered, allocatedResources is only lowered if there + are no expansion operations in progress and if the actual + volume capacity is equal or lower than the requested + capacity. This is an alpha field and requires enabling + RecoverVolumeExpansionFailure feature. + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: capacity represents the actual resources + of the underlying volume. + type: object + conditions: + description: conditions is the current Condition of persistent + volume claim. If underlying persistent volume is being + resized then the Condition will be set to 'ResizeStarted'. + items: + description: PersistentVolumeClaimCondition contails + details about state of pvc + properties: + lastProbeTime: + description: lastProbeTime is the time we probed + the condition. + format: date-time + type: string + lastTransitionTime: + description: lastTransitionTime is the time the + condition transitioned from one status to another. + format: date-time + type: string + message: + description: message is the human-readable message + indicating details about last transition. + type: string + reason: + description: reason is a unique, this should be + a short, machine understandable string that gives + the reason for condition's last transition. If + it reports "ResizeStarted" that means the underlying + persistent volume is being resized. + type: string + status: + type: string + type: + description: PersistentVolumeClaimConditionType + is a valid value of PersistentVolumeClaimCondition.Type + type: string + required: + - status + - type + type: object + type: array + phase: + description: phase represents the current phase of PersistentVolumeClaim. + type: string + resizeStatus: + description: resizeStatus stores status of resize operation. + ResizeStatus is not set by default but when expansion + is complete resizeStatus is set to empty string by resize + controller or kubelet. This is an alpha field and requires + enabling RecoverVolumeExpansionFailure feature. + type: string + type: object + type: object + type: object + tag: + description: 'Tag of Alertmanager container image to be deployed. + Defaults to the value of `version`. Version is ignored if Tag is + set. Deprecated: use ''image'' instead. The image tag can be specified + as part of the image URL.' + type: string + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates any + taint that matches the triple using the matching + operator . + properties: + effect: + description: Effect indicates the taint effect to match. Empty + means match all taint effects. When specified, allowed values + are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match all + values and all keys. + type: string + operator: + description: Operator represents a key's relationship to the + value. Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod + can tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of time + the toleration (which must be of effect NoExecute, otherwise + this field is ignored) tolerates the taint. By default, it + is not set, which means tolerate the taint forever (do not + evict). Zero and negative values will be treated as 0 (evict + immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: If specified, the pod's topology spread constraints. + items: + description: TopologySpreadConstraint specifies how to spread matching + pods among the given topology. + properties: + labelSelector: + description: LabelSelector is used to find matching pods. Pods + that match this label selector are counted to determine the + number of pods in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists or + DoesNotExist, the values array must be empty. This + array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select + the pods over which spreading will be calculated. The keys + are used to lookup values from the incoming pod labels, those + key-value labels are ANDed with labelSelector to select the + group of existing pods over which spreading will be calculated + for the incoming pod. Keys that don't exist in the incoming + pod labels will be ignored. A null or empty list means only + match against labelSelector. + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + description: 'MaxSkew describes the degree to which pods may + be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, + it is the maximum permitted difference between the number + of matching pods in the target topology and the global minimum. + The global minimum is the minimum number of matching pods + in an eligible domain or zero if the number of eligible domains + is less than MinDomains. For example, in a 3-zone cluster, + MaxSkew is set to 1, and pods with the same labelSelector + spread as 2/2/1: In this case, the global minimum is 1. | + zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew + is 1, incoming pod can only be scheduled to zone3 to become + 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) + on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming + pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, + it is used to give higher precedence to topologies that satisfy + it. It''s a required field. Default value is 1 and 0 is not + allowed.' + format: int32 + type: integer + minDomains: + description: "MinDomains indicates a minimum number of eligible + domains. When the number of eligible domains with matching + topology keys is less than minDomains, Pod Topology Spread + treats \"global minimum\" as 0, and then the calculation of + Skew is performed. And when the number of eligible domains + with matching topology keys equals or greater than minDomains, + this value has no effect on scheduling. As a result, when + the number of eligible domains is less than minDomains, scheduler + won't schedule more than maxSkew Pods to those domains. If + value is nil, the constraint behaves as if MinDomains is equal + to 1. Valid values are integers greater than 0. When value + is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For + example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains + is set to 5 and pods with the same labelSelector spread as + 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | + The number of domains is less than 5(MinDomains), so \"global + minimum\" is treated as 0. In this situation, new pod with + the same labelSelector cannot be scheduled, because computed + skew will be 3(3 - 0) if new Pod is scheduled to any of the + three zones, it will violate MaxSkew. \n This is a beta field + and requires the MinDomainsInPodTopologySpread feature gate + to be enabled (enabled by default)." + format: int32 + type: integer + nodeAffinityPolicy: + description: "NodeAffinityPolicy indicates how we will treat + Pod's nodeAffinity/nodeSelector when calculating pod topology + spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector + are included in the calculations. - Ignore: nodeAffinity/nodeSelector + are ignored. All nodes are included in the calculations. \n + If this value is nil, the behavior is equivalent to the Honor + policy. This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread + feature flag." + type: string + nodeTaintsPolicy: + description: "NodeTaintsPolicy indicates how we will treat node + taints when calculating pod topology spread skew. Options + are: - Honor: nodes without taints, along with tainted nodes + for which the incoming pod has a toleration, are included. + - Ignore: node taints are ignored. All nodes are included. + \n If this value is nil, the behavior is equivalent to the + Ignore policy. This is a alpha-level feature enabled by the + NodeInclusionPolicyInPodTopologySpread feature flag." + type: string + topologyKey: + description: TopologyKey is the key of node labels. Nodes that + have a label with this key and identical values are considered + to be in the same topology. We consider each + as a "bucket", and try to put balanced number of pods into + each bucket. We define a domain as a particular instance of + a topology. Also, we define an eligible domain as a domain + whose nodes meet the requirements of nodeAffinityPolicy and + nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", + each Node is a domain of that topology. And, if TopologyKey + is "topology.kubernetes.io/zone", each zone is a domain of + that topology. It's a required field. + type: string + whenUnsatisfiable: + description: 'WhenUnsatisfiable indicates how to deal with a + pod if it doesn''t satisfy the spread constraint. - DoNotSchedule + (default) tells the scheduler not to schedule it. - ScheduleAnyway + tells the scheduler to schedule the pod in any location, but + giving higher precedence to topologies that would help reduce + the skew. A constraint is considered "Unsatisfiable" for an + incoming pod if and only if every possible node assignment + for that pod would violate "MaxSkew" on some topology. For + example, in a 3-zone cluster, MaxSkew is set to 1, and pods + with the same labelSelector spread as 3/1/1: | zone1 | zone2 + | zone3 | | P P P | P | P | If WhenUnsatisfiable is + set to DoNotSchedule, incoming pod can only be scheduled to + zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on + zone2(zone3) satisfies MaxSkew(1). In other words, the cluster + can still be imbalanced, but scheduler won''t make it *more* + imbalanced. It''s a required field.' + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + version: + description: Version the cluster should be on. + type: string + volumeMounts: + description: VolumeMounts allows configuration of additional VolumeMounts + on the output StatefulSet definition. VolumeMounts specified will + be appended to other VolumeMounts in the alertmanager container, + that are generated as a result of StorageSpec objects. + items: + description: VolumeMount describes a mounting of a Volume within + a container. + properties: + mountPath: + description: Path within the container at which the volume should + be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated + from the host to container and the other way around. When + not set, MountPropagationNone is used. This field is beta + in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the + container's volume should be mounted. Behaves similarly to + SubPath but environment variable references $(VAR_NAME) are + expanded using the container's environment. Defaults to "" + (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + volumes: + description: Volumes allows configuration of additional volumes on + the output StatefulSet definition. Volumes specified will be appended + to other volumes that are generated as a result of StorageSpec objects. + items: + description: Volume represents a named volume in a pod that may + be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'awsElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'fsType is the filesystem type of the volume + that you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + partition: + description: 'partition is the partition in the volume that + you want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'readOnly value true will force the readOnly + setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'volumeID is unique ID of the persistent disk + resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: azureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. + properties: + cachingMode: + description: 'cachingMode is the Host Caching mode: None, + Read Only, Read Write.' + type: string + diskName: + description: diskName is the Name of the data disk in the + blob storage + type: string + diskURI: + description: diskURI is the URI of data disk in the blob + storage + type: string + fsType: + description: fsType is Filesystem type to mount. Must be + a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. + type: string + kind: + description: 'kind expected values are Shared: multiple + blob disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults to shared' + type: string + readOnly: + description: readOnly Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: azureFile represents an Azure File Service mount + on the host and bind mount to the pod. + properties: + readOnly: + description: readOnly defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: secretName is the name of secret that contains + Azure Storage Account Name and Key + type: string + shareName: + description: shareName is the azure share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: cephFS represents a Ceph FS mount on the host that + shares a pod's lifetime + properties: + monitors: + description: 'monitors is Required: Monitors is a collection + of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'path is Optional: Used as the mounted root, + rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'readOnly is Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'secretFile is Optional: SecretFile is the + path to key ring for User, default is /etc/ceph/user.secret + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'secretRef is Optional: SecretRef is reference + to the authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + user: + description: 'user is optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to + be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'readOnly defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'secretRef is optional: points to a secret + object containing parameters used to connect to OpenStack.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + volumeID: + description: 'volumeID used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: configMap represents a configMap that should populate + this volume + properties: + defaultMode: + description: 'defaultMode is optional: mode bits used to + set permissions on created files by default. Must be an + octal value between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. Defaults to + 0644. Directories within the path are not affected by + this setting. This might be in conflict with other options + that affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: items if unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits used to + set permissions on this file. Must be an octal value + between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. If not + specified, the volume defaultMode will be used. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of the file + to map the key to. May not be an absolute path. + May not contain the path element '..'. May not start + with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: optional specify whether the ConfigMap or its + keys must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + csi: + description: csi (Container Storage Interface) represents ephemeral + storage that is handled by certain external CSI drivers (Beta + feature). + properties: + driver: + description: driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. + type: string + fsType: + description: fsType to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem + to apply. + type: string + nodePublishSecretRef: + description: nodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + readOnly: + description: readOnly specifies a read-only configuration + for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: volumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: downwardAPI represents downward API about the pod + that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a Optional: mode bits used to set + permissions on created files by default. Must be an octal + value between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. Defaults to + 0644. Directories within the path are not affected by + this setting. This might be in conflict with other options + that affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume file + items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + description: 'Optional: mode bits used to set permissions + on this file, must be an octal value between 0000 + and 0777 or a decimal value between 0 and 511. YAML + accepts both octal and decimal values, JSON requires + decimal values for mode bits. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'emptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'medium represents what type of storage medium + should back this directory. The default is "" which means + to use the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'sizeLimit is the total amount of local storage + required for this EmptyDir volume. The size limit is also + applicable for memory medium. The maximum usage on memory + medium EmptyDir would be the minimum value between the + SizeLimit specified here and the sum of memory limits + of all containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + description: "ephemeral represents a volume that is handled + by a cluster storage driver. The volume's lifecycle is tied + to the pod that defines it - it will be created before the + pod starts, and deleted when the pod is removed. \n Use this + if: a) the volume is only needed while the pod runs, b) features + of normal volumes like restoring from snapshot or capacity + tracking are needed, c) the storage driver is specified through + a storage class, and d) the storage driver supports dynamic + volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource + for more information on the connection between this volume + type and PersistentVolumeClaim). \n Use PersistentVolumeClaim + or one of the vendor-specific APIs for volumes that persist + for longer than the lifecycle of an individual pod. \n Use + CSI for light-weight local ephemeral volumes if the CSI driver + is meant to be used that way - see the documentation of the + driver for more information. \n A pod can use both types of + ephemeral volumes and persistent volumes at the same time." + properties: + volumeClaimTemplate: + description: "Will be used to create a stand-alone PVC to + provision the volume. The pod in which this EphemeralVolumeSource + is embedded will be the owner of the PVC, i.e. the PVC + will be deleted together with the pod. The name of the + PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. + Pod validation will reject the pod if the concatenated + name is not valid for a PVC (for example, too long). \n + An existing PVC with that name that is not owned by the + pod will *not* be used for the pod to avoid using an unrelated + volume by mistake. Starting the pod is then blocked until + the unrelated PVC is removed. If such a pre-created PVC + is meant to be used by the pod, the PVC has to updated + with an owner reference to the pod once the pod exists. + Normally this should not be necessary, but it may be useful + when manually reconstructing a broken cluster. \n This + field is read-only and no changes will be made by Kubernetes + to the PVC after it has been created. \n Required, must + not be nil." + properties: + metadata: + description: May contain labels and annotations that + will be copied into the PVC when creating it. No other + fields are allowed and will be rejected during validation. + type: object + spec: + description: The specification for the PersistentVolumeClaim. + The entire content is copied unchanged into the PVC + that gets created from this template. The same fields + as in a PersistentVolumeClaim are also valid here. + properties: + accessModes: + description: 'accessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'dataSource field can be used to specify + either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + * An existing PVC (PersistentVolumeClaim) If the + provisioner or an external controller can support + the specified data source, it will create a new + volume based on the contents of the specified + data source. If the AnyVolumeDataSource feature + gate is enabled, this field will always have the + same contents as the DataSourceRef field.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API + group. For any other third-party types, APIGroup + is required. + type: string + kind: + description: Kind is the type of resource being + referenced + type: string + name: + description: Name is the name of resource being + referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + description: 'dataSourceRef specifies the object + from which to populate the volume with data, if + a non-empty volume is desired. This may be any + local object from a non-empty API group (non core + object) or a PersistentVolumeClaim object. When + this field is specified, volume binding will only + succeed if the type of the specified object matches + some installed volume populator or dynamic provisioner. + This field will replace the functionality of the + DataSource field and as such if both fields are + non-empty, they must have the same value. For + backwards compatibility, both fields (DataSource + and DataSourceRef) will be set to the same value + automatically if one of them is empty and the + other is non-empty. There are two important differences + between DataSource and DataSourceRef: * While + DataSource only allows two specific types of objects, + DataSourceRef allows any non-core object, as well + as PersistentVolumeClaim objects. * While DataSource + ignores disallowed values (dropping them), DataSourceRef + preserves all values, and generates an error if + a disallowed value is specified. (Beta) Using + this field requires the AnyVolumeDataSource feature + gate to be enabled.' + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API + group. For any other third-party types, APIGroup + is required. + type: string + kind: + description: Kind is the type of resource being + referenced + type: string + name: + description: Name is the name of resource being + referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + resources: + description: 'resources represents the minimum resources + the volume should have. If RecoverVolumeExpansionFailure + feature is enabled users are allowed to specify + resource requirements that are lower than previous + value but must still be higher than capacity recorded + in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum + amount of compute resources required. If Requests + is omitted for a container, it defaults to + Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + selector: + description: selector is a label query over volumes + to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + description: 'storageClassName is the name of the + StorageClass required by the claim. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume + is required by the claim. Value of Filesystem + is implied when not included in claim spec. + type: string + volumeName: + description: volumeName is the binding reference + to the PersistentVolume backing this claim. + type: string + type: object + required: + - spec + type: object + type: object + fc: + description: fc represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. + properties: + fsType: + description: 'fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' + type: string + lun: + description: 'lun is Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'readOnly is Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'targetWWNs is Optional: FC target worldwide + names (WWNs)' + items: + type: string + type: array + wwids: + description: 'wwids Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: flexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. + properties: + driver: + description: driver is the name of the driver to use for + this volume. + type: string + fsType: + description: fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". The default filesystem depends + on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'options is Optional: this field holds extra + command options if any.' + type: object + readOnly: + description: 'readOnly is Optional: defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + secretRef: + description: 'secretRef is Optional: secretRef is reference + to the secret object containing sensitive information + to pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the plugin + scripts.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + required: + - driver + type: object + flocker: + description: flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running + properties: + datasetName: + description: datasetName is Name of the dataset stored as + metadata -> name on the dataset for Flocker should be + considered as deprecated + type: string + datasetUUID: + description: datasetUUID is the UUID of the dataset. This + is unique identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'gcePersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'fsType is filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + partition: + description: 'partition is the partition in the volume that + you want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'pdName is unique name of the PD resource in + GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'readOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'gitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' + properties: + directory: + description: directory is the target directory name. Must + not contain or start with '..'. If '.' is supplied, the + volume directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. + type: string + repository: + description: repository is the URL + type: string + revision: + description: revision is the commit hash for the specified + revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'endpoints is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'readOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'hostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' + properties: + path: + description: 'path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'iscsi represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: chapAuthDiscovery defines whether support iSCSI + Discovery CHAP authentication + type: boolean + chapAuthSession: + description: chapAuthSession defines whether support iSCSI + Session CHAP authentication + type: boolean + fsType: + description: 'fsType is the filesystem type of the volume + that you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + initiatorName: + description: initiatorName is the custom iSCSI Initiator + Name. If initiatorName is specified with iscsiInterface + simultaneously, new iSCSI interface : will be created for the connection. + type: string + iqn: + description: iqn is the target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iscsiInterface is the interface Name that uses + an iSCSI transport. Defaults to 'default' (tcp). + type: string + lun: + description: lun represents iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: portals is the iSCSI Target Portal List. The + portal is either an IP or ip_addr:port if the port is + other than default (typically TCP ports 860 and 3260). + items: + type: string + type: array + readOnly: + description: readOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: secretRef is the CHAP Secret for iSCSI target + and initiator authentication + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + targetPortal: + description: targetPortal is iSCSI Target Portal. The Portal + is either an IP or ip_addr:port if the port is other than + default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'name of the volume. Must be a DNS_LABEL and unique + within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'nfs represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'readOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'persistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'claimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: readOnly Will force the ReadOnly setting in + VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: photonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine + properties: + fsType: + description: fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. + type: string + pdID: + description: pdID is the ID that identifies Photon Controller + persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: portworxVolume represents a portworx volume attached + and mounted on kubelets host machine + properties: + fsType: + description: fSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. + type: string + readOnly: + description: readOnly defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: volumeID uniquely identifies a Portworx volume + type: string + required: + - volumeID + type: object + projected: + description: projected items for all in one resources secrets, + configmaps, and downward API + properties: + defaultMode: + description: defaultMode are the mode bits used to set permissions + on created files by default. Must be an octal value between + 0000 and 0777 or a decimal value between 0 and 511. YAML + accepts both octal and decimal values, JSON requires decimal + values for mode bits. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. + format: int32 + type: integer + sources: + description: sources is the list of volume projections + items: + description: Projection that may be projected along with + other supported volume types + properties: + configMap: + description: configMap information about the configMap + data to project + properties: + items: + description: items if unspecified, each key-value + pair in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits + used to set permissions on this file. + Must be an octal value between 0000 and + 0777 or a decimal value between 0 and + 511. YAML accepts both octal and decimal + values, JSON requires decimal values for + mode bits. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of + the file to map the key to. May not be + an absolute path. May not contain the + path element '..'. May not start with + the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: optional specify whether the ConfigMap + or its keys must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + downwardAPI: + description: downwardAPI information about the downwardAPI + data to project + properties: + items: + description: Items is a list of DownwardAPIVolume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field + properties: + fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + mode: + description: 'Optional: mode bits used to + set permissions on this file, must be + an octal value between 0000 and 0777 or + a decimal value between 0 and 511. YAML + accepts both octal and decimal values, + JSON requires decimal values for mode + bits. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required + for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults + to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to + select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + required: + - path + type: object + type: array + type: object + secret: + description: secret information about the secret data + to project + properties: + items: + description: items if unspecified, each key-value + pair in the Data field of the referenced Secret + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits + used to set permissions on this file. + Must be an octal value between 0000 and + 0777 or a decimal value between 0 and + 511. YAML accepts both octal and decimal + values, JSON requires decimal values for + mode bits. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of + the file to map the key to. May not be + an absolute path. May not contain the + path element '..'. May not start with + the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: optional field specify whether the + Secret or its key must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + serviceAccountToken: + description: serviceAccountToken is information about + the serviceAccountToken data to project + properties: + audience: + description: audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. + type: string + expirationSeconds: + description: expirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. + format: int64 + type: integer + path: + description: path is the path relative to the + mount point of the file to project the token + into. + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + description: quobyte represents a Quobyte mount on the host + that shares a pod's lifetime + properties: + group: + description: group to map volume access to Default is no + group + type: string + readOnly: + description: readOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. + type: boolean + registry: + description: registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes + type: string + tenant: + description: tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin + type: string + user: + description: user to map volume access to Defaults to serivceaccount + user + type: string + volume: + description: volume is a string that references an already + created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'rbd represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'fsType is the filesystem type of the volume + that you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + image: + description: 'image is the rados image name. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'monitors is a collection of Ceph monitors. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'pool is the rados pool name. Default is rbd. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'readOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'secretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + user: + description: 'user is the rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: scaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. + properties: + fsType: + description: fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Default is "xfs". + type: string + gateway: + description: gateway is the host address of the ScaleIO + API Gateway. + type: string + protectionDomain: + description: protectionDomain is the name of the ScaleIO + Protection Domain for the configured storage. + type: string + readOnly: + description: readOnly Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: secretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + sslEnabled: + description: sslEnabled Flag enable/disable SSL communication + with Gateway, default false + type: boolean + storageMode: + description: storageMode indicates whether the storage for + a volume should be ThickProvisioned or ThinProvisioned. + Default is ThinProvisioned. + type: string + storagePool: + description: storagePool is the ScaleIO Storage Pool associated + with the protection domain. + type: string + system: + description: system is the name of the storage system as + configured in ScaleIO. + type: string + volumeName: + description: volumeName is the name of a volume already + created in the ScaleIO system that is associated with + this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'defaultMode is Optional: mode bits used to + set permissions on created files by default. Must be an + octal value between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. Defaults to + 0644. Directories within the path are not affected by + this setting. This might be in conflict with other options + that affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + items: + description: items If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: key is the key to project. + type: string + mode: + description: 'mode is Optional: mode bits used to + set permissions on this file. Must be an octal value + between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. If not + specified, the volume defaultMode will be used. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set.' + format: int32 + type: integer + path: + description: path is the relative path of the file + to map the key to. May not be an absolute path. + May not contain the path element '..'. May not start + with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: optional field specify whether the Secret or + its keys must be defined + type: boolean + secretName: + description: 'secretName is the name of the secret in the + pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: storageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. + properties: + fsType: + description: fsType is the filesystem type to mount. Must + be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. + type: string + readOnly: + description: readOnly defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: secretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + volumeName: + description: volumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. + type: string + volumeNamespace: + description: volumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: vsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine + properties: + fsType: + description: fsType is filesystem type to mount. Must be + a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. + type: string + storagePolicyID: + description: storagePolicyID is the storage Policy Based + Management (SPBM) profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: storagePolicyName is the storage Policy Based + Management (SPBM) profile name. + type: string + volumePath: + description: volumePath is the path that identifies vSphere + volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + web: + description: Defines the web command line flags when starting Alertmanager. + properties: + httpConfig: + description: Defines HTTP parameters for web server. + properties: + headers: + description: List of headers that can be added to HTTP responses. + properties: + contentSecurityPolicy: + description: Set the Content-Security-Policy header to + HTTP responses. Unset if blank. + type: string + strictTransportSecurity: + description: Set the Strict-Transport-Security header + to HTTP responses. Unset if blank. Please make sure + that you use this with care as this header might force + browsers to load Prometheus and the other applications + hosted on the same domain and subdomains over HTTPS. + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security + type: string + xContentTypeOptions: + description: Set the X-Content-Type-Options header to + HTTP responses. Unset if blank. Accepted value is nosniff. + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options + enum: + - "" + - NoSniff + type: string + xFrameOptions: + description: Set the X-Frame-Options header to HTTP responses. + Unset if blank. Accepted values are deny and sameorigin. + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + enum: + - "" + - Deny + - SameOrigin + type: string + xXSSProtection: + description: Set the X-XSS-Protection header to all responses. + Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection + type: string + type: object + http2: + description: Enable HTTP/2 support. Note that HTTP/2 is only + supported with TLS. When TLSConfig is not configured, HTTP/2 + will be disabled. Whenever the value of the field changes, + a rolling update will be triggered. + type: boolean + type: object + tlsConfig: + description: Defines the TLS parameters for HTTPS. + properties: + cert: + description: Contains the TLS certificate for the server. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cipherSuites: + description: 'List of supported cipher suites for TLS versions + up to TLS 1.2. If empty, Go default cipher suites are used. + Available cipher suites are documented in the go documentation: + https://golang.org/pkg/crypto/tls/#pkg-constants' + items: + type: string + type: array + client_ca: + description: Contains the CA certificate for client certificate + authentication to the server. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientAuthType: + description: 'Server policy for client authentication. Maps + to ClientAuth Policies. For more detail on clientAuth options: + https://golang.org/pkg/crypto/tls/#ClientAuthType' + type: string + curvePreferences: + description: 'Elliptic curves that will be used in an ECDHE + handshake, in preference order. Available curves are documented + in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID' + items: + type: string + type: array + keySecret: + description: Secret containing the TLS key for the server. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + maxVersion: + description: Maximum TLS version that is acceptable. Defaults + to TLS13. + type: string + minVersion: + description: Minimum TLS version that is acceptable. Defaults + to TLS12. + type: string + preferServerCipherSuites: + description: Controls whether the server selects the client's + most preferred cipher suite, or the server's most preferred + cipher suite. If true then the server's preference, as expressed + in the order of elements in cipherSuites, is used. + type: boolean + required: + - cert + - keySecret + type: object + type: object + type: object + status: + description: 'Most recent observed status of the Alertmanager cluster. + Read-only. Not included when requesting from the apiserver, only from + the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + availableReplicas: + description: Total number of available pods (ready for at least minReadySeconds) + targeted by this Alertmanager cluster. + format: int32 + type: integer + paused: + description: Represents whether any actions on the underlying managed + objects are being performed. Only delete actions will be performed. + type: boolean + replicas: + description: Total number of non-terminated pods targeted by this + Alertmanager cluster (their labels match the selector). + format: int32 + type: integer + unavailableReplicas: + description: Total number of unavailable pods targeted by this Alertmanager + cluster. + format: int32 + type: integer + updatedReplicas: + description: Total number of non-terminated pods targeted by this + Alertmanager cluster that have the desired version spec. + format: int32 + type: integer + required: + - availableReplicas + - paused + - replicas + - unavailableReplicas + - updatedReplicas + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {} diff --git a/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-podmonitors.yaml b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-podmonitors.yaml new file mode 100644 index 0000000000..f6e208c14b --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-podmonitors.yaml @@ -0,0 +1,663 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: podmonitors.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: PodMonitor + listKind: PodMonitorList + plural: podmonitors + shortNames: + - pmon + singular: podmonitor + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PodMonitor defines monitoring for a set of pods. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Pod selection for target discovery + by Prometheus. + properties: + attachMetadata: + description: 'Attaches node metadata to discovered targets. Only valid + for role: pod. Only valid in Prometheus versions 2.35.0 and newer.' + properties: + node: + description: When set to true, Prometheus must have permissions + to get Nodes. + type: boolean + type: object + jobLabel: + description: The label to use to retrieve the job name from. + type: string + labelLimit: + description: Per-scrape limit on number of labels that will be accepted + for a sample. Only valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + labelNameLengthLimit: + description: Per-scrape limit on length of labels name that will be + accepted for a sample. Only valid in Prometheus versions 2.27.0 + and newer. + format: int64 + type: integer + labelValueLengthLimit: + description: Per-scrape limit on length of labels value that will + be accepted for a sample. Only valid in Prometheus versions 2.27.0 + and newer. + format: int64 + type: integer + namespaceSelector: + description: Selector to select which namespaces the Endpoints objects + are discovered from. + properties: + any: + description: Boolean describing whether all namespaces are selected + in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names to select from. + items: + type: string + type: array + type: object + podMetricsEndpoints: + description: A list of endpoints allowed as part of this PodMonitor. + items: + description: PodMetricsEndpoint defines a scrapeable endpoint of + a Kubernetes Pod serving Prometheus metrics. + properties: + authorization: + description: Authorization section for this endpoint + properties: + credentials: + description: The secret's key that contains the credentials + of the request + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults to Bearer, + Basic will cause an error + type: string + type: object + basicAuth: + description: 'BasicAuth allow an endpoint to authenticate over + basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' + properties: + password: + description: The secret in the service monitor namespace + that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor namespace + that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: Secret to mount to read bearer token for scraping + targets. The secret needs to be in the same namespace as the + pod monitor and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + enableHttp2: + description: Whether to enable HTTP2. + type: boolean + followRedirects: + description: FollowRedirects configures whether scrape requests + follow HTTP 3xx redirects. + type: boolean + honorLabels: + description: HonorLabels chooses the metric's labels on collisions + with target labels. + type: boolean + honorTimestamps: + description: HonorTimestamps controls whether Prometheus respects + the timestamps present in scraped data. + type: boolean + interval: + description: Interval at which metrics should be scraped If + not specified Prometheus' global scrape interval is used. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + metricRelabelings: + description: MetricRelabelConfigs to apply to samples before + ingestion. + items: + description: 'RelabelConfig allows dynamic rewriting of the + label set, being applied to samples before ingestion. It + defines ``-section of Prometheus + configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. + Default is 'replace'. uppercase and lowercase actions + require Prometheus >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source + label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace + is performed if the regular expression matches. Regex + capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source + label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + separator and matched against the configured regular + expression for the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label name + which may only contain ASCII letters, numbers, as + well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written + in a replace action. It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + oauth2: + description: OAuth2 for the URL. Only valid in Prometheus versions + 2.27.0 and newer. + properties: + clientId: + description: The secret or configmap containing the OAuth2 + client id + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 client secret + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token URL + type: object + scopes: + description: OAuth2 scopes used for the token request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + params: + additionalProperties: + items: + type: string + type: array + description: Optional HTTP URL parameters + type: object + path: + description: HTTP path to scrape for metrics. If empty, Prometheus + uses the default value (e.g. `/metrics`). + type: string + port: + description: Name of the pod port this endpoint refers to. Mutually + exclusive with targetPort. + type: string + proxyUrl: + description: ProxyURL eg http://proxyserver:2195 Directs scrapes + to proxy through this endpoint. + type: string + relabelings: + description: 'RelabelConfigs to apply to samples before scraping. + Prometheus Operator automatically adds relabelings for a few + standard Kubernetes fields. The original scrape job''s name + is available via the `__tmp_prometheus_job_name` label. More + info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of the + label set, being applied to samples before ingestion. It + defines ``-section of Prometheus + configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. + Default is 'replace'. uppercase and lowercase actions + require Prometheus >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source + label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace + is performed if the regular expression matches. Regex + capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source + label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + separator and matched against the configured regular + expression for the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label name + which may only contain ASCII letters, numbers, as + well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written + in a replace action. It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + scheme: + description: HTTP scheme to use for scraping. + type: string + scrapeTimeout: + description: Timeout after which the scrape is ended If not + specified, the Prometheus global scrape interval is used. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: 'Deprecated: Use ''port'' instead.' + x-kubernetes-int-or-string: true + tlsConfig: + description: TLS configuration to use when scraping the endpoint. + properties: + ca: + description: Struct containing the CA cert to use for the + targets. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert file for + the targets. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the + targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + type: array + podTargetLabels: + description: PodTargetLabels transfers labels on the Kubernetes Pod + onto the target. + items: + type: string + type: array + sampleLimit: + description: SampleLimit defines per-scrape limit on number of scraped + samples that will be accepted. + format: int64 + type: integer + selector: + description: Selector to select Pod objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + targetLimit: + description: TargetLimit defines a limit on the number of scraped + targets that will be accepted. + format: int64 + type: integer + required: + - podMetricsEndpoints + - selector + type: object + required: + - spec + type: object + served: true + storage: true diff --git a/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-probes.yaml b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-probes.yaml new file mode 100644 index 0000000000..014ef2743a --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-probes.yaml @@ -0,0 +1,704 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: probes.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: Probe + listKind: ProbeList + plural: probes + shortNames: + - prb + singular: probe + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Probe defines monitoring for a set of static targets or ingresses. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Ingress selection for target discovery + by Prometheus. + properties: + authorization: + description: Authorization section for this endpoint + properties: + credentials: + description: The secret's key that contains the credentials of + the request + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults to Bearer, + Basic will cause an error + type: string + type: object + basicAuth: + description: 'BasicAuth allow an endpoint to authenticate over basic + authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' + properties: + password: + description: The secret in the service monitor namespace that + contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor namespace that + contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerTokenSecret: + description: Secret to mount to read bearer token for scraping targets. + The secret needs to be in the same namespace as the probe and accessible + by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a + valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + interval: + description: Interval at which targets are probed using the configured + prober. If not specified Prometheus' global scrape interval is used. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + jobName: + description: The job name assigned to scraped metrics by default. + type: string + labelLimit: + description: Per-scrape limit on number of labels that will be accepted + for a sample. Only valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + labelNameLengthLimit: + description: Per-scrape limit on length of labels name that will be + accepted for a sample. Only valid in Prometheus versions 2.27.0 + and newer. + format: int64 + type: integer + labelValueLengthLimit: + description: Per-scrape limit on length of labels value that will + be accepted for a sample. Only valid in Prometheus versions 2.27.0 + and newer. + format: int64 + type: integer + metricRelabelings: + description: MetricRelabelConfigs to apply to samples before ingestion. + items: + description: 'RelabelConfig allows dynamic rewriting of the label + set, being applied to samples before ingestion. It defines ``-section + of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. Default + is 'replace'. uppercase and lowercase actions require Prometheus + >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source label + values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace + is performed if the regular expression matches. Regex capture + groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label + values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. + Their content is concatenated using the configured separator + and matched against the configured regular expression for + the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label name which + may only contain ASCII letters, numbers, as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in + a replace action. It is mandatory for replace actions. Regex + capture groups are available. + type: string + type: object + type: array + module: + description: 'The module to use for probing specifying how to probe + the target. Example module configuring in the blackbox exporter: + https://github.com/prometheus/blackbox_exporter/blob/master/example.yml' + type: string + oauth2: + description: OAuth2 for the URL. Only valid in Prometheus versions + 2.27.0 and newer. + properties: + clientId: + description: The secret or configmap containing the OAuth2 client + id + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: The secret containing the OAuth2 client secret + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: Parameters to append to the token URL + type: object + scopes: + description: OAuth2 scopes used for the token request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + prober: + description: Specification for the prober to use for probing targets. + The prober.URL parameter is required. Targets cannot be probed if + left empty. + properties: + path: + default: /probe + description: Path to collect metrics from. Defaults to `/probe`. + type: string + proxyUrl: + description: Optional ProxyURL. + type: string + scheme: + description: HTTP scheme to use for scraping. Defaults to `http`. + type: string + url: + description: Mandatory URL of the prober. + type: string + required: + - url + type: object + sampleLimit: + description: SampleLimit defines per-scrape limit on number of scraped + samples that will be accepted. + format: int64 + type: integer + scrapeTimeout: + description: Timeout for scraping metrics from the Prometheus exporter. + If not specified, the Prometheus global scrape interval is used. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + targetLimit: + description: TargetLimit defines a limit on the number of scraped + targets that will be accepted. + format: int64 + type: integer + targets: + description: Targets defines a set of static or dynamically discovered + targets to probe. + properties: + ingress: + description: ingress defines the Ingress objects to probe and + the relabeling configuration. If `staticConfig` is also defined, + `staticConfig` takes precedence. + properties: + namespaceSelector: + description: From which namespaces to select Ingress objects. + properties: + any: + description: Boolean describing whether all namespaces + are selected in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names to select from. + items: + type: string + type: array + type: object + relabelingConfigs: + description: 'RelabelConfigs to apply to the label set of + the target before it gets scraped. The original ingress + address is available via the `__tmp_prometheus_ingress_address` + label. It can be used to customize the probed URL. The original + scrape job''s name is available via the `__tmp_prometheus_job_name` + label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of + the label set, being applied to samples before ingestion. + It defines ``-section of Prometheus + configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. + Default is 'replace'. uppercase and lowercase actions + require Prometheus >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source + label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex + replace is performed if the regular expression matches. + Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source + label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + separator and matched against the configured regular + expression for the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label + name which may only contain ASCII letters, numbers, + as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written + in a replace action. It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + selector: + description: Selector to select the Ingress objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists or + DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + staticConfig: + description: 'staticConfig defines the static list of targets + to probe and the relabeling configuration. If `ingress` is also + defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.' + properties: + labels: + additionalProperties: + type: string + description: Labels assigned to all metrics scraped from the + targets. + type: object + relabelingConfigs: + description: 'RelabelConfigs to apply to the label set of + the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of + the label set, being applied to samples before ingestion. + It defines ``-section of Prometheus + configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. + Default is 'replace'. uppercase and lowercase actions + require Prometheus >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source + label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex + replace is performed if the regular expression matches. + Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source + label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing + labels. Their content is concatenated using the configured + separator and matched against the configured regular + expression for the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label + name which may only contain ASCII letters, numbers, + as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written + in a replace action. It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + static: + description: The list of hosts to probe. + items: + type: string + type: array + type: object + type: object + tlsConfig: + description: TLS configuration to use when scraping the endpoint. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + required: + - spec + type: object + served: true + storage: true diff --git a/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-prometheuses.yaml b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-prometheuses.yaml new file mode 100644 index 0000000000..d9d97405be --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.3+up40.1.2/crd-manifest/crd-prometheuses.yaml @@ -0,0 +1,8801 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: prometheuses.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: Prometheus + listKind: PrometheusList + plural: prometheuses + shortNames: + - prom + singular: prometheus + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The version of Prometheus + jsonPath: .spec.version + name: Version + type: string + - description: The desired replicas number of Prometheuses + jsonPath: .spec.replicas + name: Replicas + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Prometheus defines a Prometheus deployment. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: 'Specification of the desired behavior of the Prometheus + cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + additionalAlertManagerConfigs: + description: 'AdditionalAlertManagerConfigs allows specifying a key + of a Secret containing additional Prometheus AlertManager configurations. + AlertManager configurations specified are appended to the configurations + generated by the Prometheus Operator. Job configurations specified + must have the form as specified in the official Prometheus documentation: + https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. + As AlertManager configs are appended, the user is responsible to + make sure it is valid. Note that using this feature may expose the + possibility to break upgrades of Prometheus. It is advised to review + Prometheus release notes to ensure that no incompatible AlertManager + configs are going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a + valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + additionalAlertRelabelConfigs: + description: 'AdditionalAlertRelabelConfigs allows specifying a key + of a Secret containing additional Prometheus alert relabel configurations. + Alert relabel configurations specified are appended to the configurations + generated by the Prometheus Operator. Alert relabel configurations + specified must have the form as specified in the official Prometheus + documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. + As alert relabel configs are appended, the user is responsible to + make sure it is valid. Note that using this feature may expose the + possibility to break upgrades of Prometheus. It is advised to review + Prometheus release notes to ensure that no incompatible alert relabel + configs are going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a + valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + additionalArgs: + description: AdditionalArgs allows setting additional arguments for + the Prometheus container. It is intended for e.g. activating hidden + flags which are not supported by the dedicated configuration options + yet. The arguments are passed as-is to the Prometheus container + which may cause issues if they are invalid or not supporeted by + the given Prometheus version. In case of an argument conflict (e.g. + an argument which is already set by the operator itself) or when + providing an invalid argument the reconciliation will fail and an + error will be logged. + items: + description: Argument as part of the AdditionalArgs list. + properties: + name: + description: Name of the argument, e.g. "scrape.discovery-reload-interval". + minLength: 1 + type: string + value: + description: Argument value, e.g. 30s. Can be empty for name-only + arguments (e.g. --storage.tsdb.no-lockfile) + type: string + required: + - name + type: object + type: array + additionalScrapeConfigs: + description: 'AdditionalScrapeConfigs allows specifying a key of a + Secret containing additional Prometheus scrape configurations. Scrape + configurations specified are appended to the configurations generated + by the Prometheus Operator. Job configurations specified must have + the form as specified in the official Prometheus documentation: + https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. + As scrape configs are appended, the user is responsible to make + sure it is valid. Note that using this feature may expose the possibility + to break upgrades of Prometheus. It is advised to review Prometheus + release notes to ensure that no incompatible scrape configs are + going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a + valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the + pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the affinity expressions specified by + this field, but it may choose a node that violates one or + more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node matches + the corresponding matchExpressions; the node(s) with the + highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects (i.e. + is also a no-op). + properties: + preference: + description: A node selector term, associated with the + corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the corresponding + nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this + field are not met at scheduling time, the pod will not be + scheduled onto the node. If the affinity requirements specified + by this field cease to be met at some point during pod execution + (e.g. due to an update), the system may or may not try to + eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term matches + no objects. The requirements of them are ANDed. The + TopologySelectorTerm type implements a subset of the + NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists, DoesNotExist. Gt, and + Lt. + type: string + values: + description: An array of string values. If + the operator is In or NotIn, the values + array must be non-empty. If the operator + is Exists or DoesNotExist, the values array + must be empty. If the operator is Gt or + Lt, the values array must have a single + element, which will be interpreted as an + integer. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. co-locate + this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the affinity expressions specified by + this field, but it may choose a node that violates one or + more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node has + pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces field. + null selector and null or empty namespaces list + means "this pod's namespace". An empty selector + ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding + podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this + field are not met at scheduling time, the pod will not be + scheduled onto the node. If the affinity requirements specified + by this field cease to be met at some point during pod execution + (e.g. due to a pod label update), the system may or may + not try to eventually evict the pod from its node. When + there are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all terms + must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is defined as running + on a node whose value of the label with key + matches that of any node on which a pod of the set of + pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied to the + union of the namespaces selected by this field and + the ones listed in the namespaces field. null selector + and null or empty namespaces list means "this pod's + namespace". An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list of namespace + names that the term applies to. The term is applied + to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. null or + empty namespaces list and null namespaceSelector means + "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where + co-located is defined as running on a node whose value + of the label with key topologyKey matches that of + any node on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules (e.g. + avoid putting this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to + nodes that satisfy the anti-affinity expressions specified + by this field, but it may choose a node that violates one + or more of the expressions. The node that is most preferred + is the one with the greatest sum of weights, i.e. for each + node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements of + this field and adding "weight" to the sum if the node has + pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied + to the union of the namespaces selected by this + field and the ones listed in the namespaces field. + null selector and null or empty namespaces list + means "this pod's namespace". An empty selector + ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only "value". + The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding + podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the anti-affinity requirements + specified by this field cease to be met at some point during + pod execution (e.g. due to a pod label update), the system + may or may not try to eventually evict the pod from its + node. When there are multiple elements, the lists of nodes + corresponding to each podAffinityTerm are intersected, i.e. + all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is defined as running + on a node whose value of the label with key + matches that of any node on which a pod of the set of + pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaceSelector: + description: A label query over the set of namespaces + that the term applies to. The term is applied to the + union of the namespaces selected by this field and + the ones listed in the namespaces field. null selector + and null or empty namespaces list means "this pod's + namespace". An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a + selector that contains values, a key, and an + operator that relates the key and values. + properties: + key: + description: key is the label key that the + selector applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If the + operator is Exists or DoesNotExist, the + values array must be empty. This array is + replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". The + requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list of namespace + names that the term applies to. The term is applied + to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. null or + empty namespaces list and null namespaceSelector means + "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where + co-located is defined as running on a node whose value + of the label with key topologyKey matches that of + any node on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + alerting: + description: Define details regarding alerting. + properties: + alertmanagers: + description: AlertmanagerEndpoints Prometheus should fire alerts + against. + items: + description: AlertmanagerEndpoints defines a selection of a + single Endpoints object containing alertmanager IPs to fire + alerts against. + properties: + apiVersion: + description: Version of the Alertmanager API that Prometheus + uses to send alerts. It can be "v1" or "v2". + type: string + authorization: + description: Authorization section for this alertmanager + endpoint + properties: + credentials: + description: The secret's key that contains the credentials + of the request + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: + description: Set the authentication type. Defaults to + Bearer, Basic will cause an error + type: string + type: object + bearerTokenFile: + description: BearerTokenFile to read from filesystem to + use when authenticating to Alertmanager. + type: string + name: + description: Name of Endpoints object in Namespace. + type: string + namespace: + description: Namespace of Endpoints object. + type: string + pathPrefix: + description: Prefix for the HTTP path alerts are pushed + to. + type: string + port: + anyOf: + - type: integer + - type: string + description: Port the Alertmanager API is exposed on. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use when firing alerts. + type: string + timeout: + description: Timeout is a per-target Alertmanager timeout + when pushing alerts. + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + tlsConfig: + description: TLS Config to use for alertmanager connection. + properties: + ca: + description: Struct containing the CA cert to use for + the targets. + properties: + configMap: + description: ConfigMap containing data to use for + the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the + targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + caFile: + description: Path to the CA cert in the Prometheus container + to use for the targets. + type: string + cert: + description: Struct containing the client cert file + for the targets. + properties: + configMap: + description: ConfigMap containing data to use for + the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the + targets. + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + certFile: + description: Path to the client cert file in the Prometheus + container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus + container for the targets. + type: string + keySecret: + description: Secret containing the client key file for + the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + required: + - name + - namespace + - port + type: object + type: array + required: + - alertmanagers + type: object + allowOverlappingBlocks: + description: AllowOverlappingBlocks enables vertical compaction and + vertical query merge in Prometheus. This is still experimental in + Prometheus so it may change in any upcoming release. + type: boolean + apiserverConfig: + description: APIServerConfig allows specifying a host and auth methods + to access apiserver. If left empty, Prometheus is assumed to run + inside of the cluster and will discover API servers automatically + and use the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. + properties: + authorization: + description: Authorization section for accessing apiserver + properties: + credentials: + description: The secret's key that contains the credentials + of the request + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + credentialsFile: + description: File to read a secret from, mutually exclusive + with Credentials (from SafeAuthorization) + type: string + type: + description: Set the authentication type. Defaults to Bearer, + Basic will cause an error + type: string + type: object + basicAuth: + description: BasicAuth allow an endpoint to authenticate over + basic authentication + properties: + password: + description: The secret in the service monitor namespace that + contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + username: + description: The secret in the service monitor namespace that + contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + bearerToken: + description: Bearer token for accessing apiserver. + type: string + bearerTokenFile: + description: File to read bearer token for accessing apiserver. + type: string + host: + description: Host of apiserver. A valid string consisting of a + hostname or IP followed by an optional port number + type: string + tlsConfig: + description: TLS Config to use for accessing apiserver. + properties: + ca: + description: Struct containing the CA cert to use for the + targets. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + caFile: + description: Path to the CA cert in the Prometheus container + to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the + targets. + properties: + configMap: + description: ConfigMap containing data to use for the + targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + certFile: + description: Path to the client cert file in the Prometheus + container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus + container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the + targets. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + required: + - host + type: object + arbitraryFSAccessThroughSMs: + description: ArbitraryFSAccessThroughSMs configures whether configuration + based on a service monitor can access arbitrary files on the file + system of the Prometheus container e.g. bearer token files. + properties: + deny: + type: boolean + type: object + baseImage: + description: 'Base image to use for a Prometheus deployment. Deprecated: + use ''image'' instead' + type: string + configMaps: + description: ConfigMaps is a list of ConfigMaps in the same namespace + as the Prometheus object, which shall be mounted into the Prometheus + Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. + items: + type: string + type: array + containers: + description: 'Containers allows injecting additional containers or + modifying operator generated containers. This can be used to allow + adding an authentication proxy to a Prometheus pod or to change + the behavior of an operator generated container. Containers described + here modify an operator generated container if they share the same + name and modifications are done via a strategic merge patch. The + current container names are: `prometheus`, `config-reloader`, and + `thanos-sidecar`. Overriding containers is entirely outside the + scope of what the maintainers will support and by doing so, you + accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run + within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. + The container image''s ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: + i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. + Cannot be updated. + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must be + a C_IDENTIFIER. All invalid keys will be reported as an event + when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take + precedence. Values defined by an Env with a duplicate key + will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set + of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap must be + defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each + key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management + to default or override container images in workload controllers + like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. + Defaults to Always if :latest tag is specified, or IfNotPresent + otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The Pod''s termination grace period + countdown begins before the PreStop hook is executed. + Regardless of the outcome of the handler, the container + will eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other management + of the container blocks until the hook completes or until + the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Not + specifying a port here DOES NOT prevent that port from being + exposed. Any port which is listening on the default "0.0.0.0" + address inside a container will be accessible from the network. + Modifying this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port in a + single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP + address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If + specified, this must be a valid port number, 0 < x < + 65536. If HostNetwork is specified, this must match + ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in a pod + must have a unique name. Name for the port that can + be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + securityContext: + description: 'SecurityContext defines the security options the + container should be run with. If set, the fields of SecurityContext + override the equivalent fields of PodSecurityContext. More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent process. + This bool directly controls if the no_new_privs flag will + be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN Note that this field cannot be set + when spec.os.name is windows.' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by + the container runtime. Note that this field cannot be + set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent to + root on the host. Defaults to false. Note that this field + cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount to + use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field cannot + be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root + filesystem. Default is false. Note that this field cannot + be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value specified + in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod & container + level, the container options override the pod options. + Note that this field cannot be set when spec.os.name is + windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile + must be preconfigured on the node to work. Must be + a descending path, relative to the kubelet's configured + seccomp profile location. Must only be set if type + is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - + a profile defined in a file on the node should be + used. RuntimeDefault - the container runtime default + profile should be used. Unconfined - no profile should + be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options from the PodSecurityContext + will be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is + linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. This field is + alpha-level and will only be honored by components + that enable the WindowsHostProcessContainers feature + flag. Setting this field without the feature flag + will result in errors when validating the Pod. All + of a Pod's containers must have the same effective + HostProcess value (it is not allowed to have a mix + of HostProcess containers and non-HostProcess containers). In + addition, if HostProcess is true then HostNetwork + must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully + initialized. If specified, no other probes are executed until + this completes successfully. If this probe fails, the Pod + will be restarted, just as if the livenessProbe failed. This + can be used to provide different probe parameters at the beginning + of a Pod''s lifecycle, when it might take a long time to load + data or warm a cache, than during steady-state operation. + This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer + for stdin in the container runtime. If this is not set, reads + from stdin in the container will always result in EOF. Default + is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the + stdin channel after it has been opened by a single attach. + When stdin is true the stdin stream will remain open across + multiple attach sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until the first client + attaches to stdin, and then remains open and accepts data + until the client disconnects, at which time stdin is closed + and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the + container''s termination message will be written is mounted + into the container''s filesystem. Message written is intended + to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. + The total message length across all containers will be limited + to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be + populated. File will use the contents of terminationMessagePath + to populate the container status message on both success and + failure. FallbackToLogsOnError will use the last chunk of + container log output if the termination message file is empty + and the container exited with an error. The log output is + limited to 2048 bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for + itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be + used by the container. + items: + description: volumeDevice describes a mapping of a raw block + device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container + that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. + Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the volume + should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are + propagated from the host to container and the other + way around. When not set, MountPropagationNone is used. + This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves similarly + to SubPath but environment variable references $(VAR_NAME) + are expanded using the container's environment. Defaults + to "" (volume's root). SubPathExpr and SubPath are mutually + exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which might + be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + disableCompaction: + description: Disable prometheus compaction. + type: boolean + enableAdminAPI: + description: 'Enable access to prometheus web admin API. Defaults + to the value of `false`. WARNING: Enabling the admin APIs enables + mutating endpoints, to delete data, shutdown Prometheus, and more. + Enabling this should be done with care and the user is advised to + add additional authentication authorization via a proxy to ensure + only clients authorized to perform these actions can do so. For + more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' + type: boolean + enableFeatures: + description: Enable access to Prometheus disabled features. By default, + no features are enabled. Enabling disabled features is entirely + outside the scope of what the maintainers will support and by doing + so, you accept that this behaviour may break at any time without + notice. For more information see https://prometheus.io/docs/prometheus/latest/disabled_features/ + items: + type: string + type: array + enableRemoteWriteReceiver: + description: 'Enable Prometheus to be used as a receiver for the Prometheus + remote write protocol. Defaults to the value of `false`. WARNING: + This is not considered an efficient way of ingesting samples. Use + it with caution for specific low-volume use cases. It is not suitable + for replacing the ingestion via scraping and turning Prometheus + into a push-based metrics collection system. For more information + see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver + Only valid in Prometheus versions 2.33.0 and newer.' + type: boolean + enforcedBodySizeLimit: + description: 'EnforcedBodySizeLimit defines the maximum size of uncompressed + response body that will be accepted by Prometheus. Targets responding + with a body larger than this many bytes will cause the scrape to + fail. Example: 100MB. If defined, the limit will apply to all service/pod + monitors and probes. This is an experimental feature, this behaviour + could change or be removed in the future. Only valid in Prometheus + versions 2.28.0 and newer.' + pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$ + type: string + enforcedLabelLimit: + description: Per-scrape limit on number of labels that will be accepted + for a sample. If more than this number of labels are present post + metric-relabeling, the entire scrape will be treated as failed. + 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + enforcedLabelNameLengthLimit: + description: Per-scrape limit on length of labels name that will be + accepted for a sample. If a label name is longer than this number + post metric-relabeling, the entire scrape will be treated as failed. + 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + enforcedLabelValueLengthLimit: + description: Per-scrape limit on length of labels value that will + be accepted for a sample. If a label value is longer than this number + post metric-relabeling, the entire scrape will be treated as failed. + 0 means no limit. Only valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + enforcedNamespaceLabel: + description: "EnforcedNamespaceLabel If set, a label will be added + to \n 1. all user-metrics (created by `ServiceMonitor`, `PodMonitor` + and `Probe` objects) and 2. in all `PrometheusRule` objects (except + the ones excluded in `prometheusRulesExcludedFromEnforce`) to * + alerting & recording rules and * the metrics used in their expressions + (`expr`). \n Label name is this field's value. Label value is the + namespace of the created object (mentioned above)." + type: string + enforcedSampleLimit: + description: EnforcedSampleLimit defines global limit on number of + scraped samples that will be accepted. This overrides any SampleLimit + set per ServiceMonitor or/and PodMonitor. It is meant to be used + by admins to enforce the SampleLimit to keep overall number of samples/series + under the desired limit. Note that if SampleLimit is lower that + value will be taken instead. + format: int64 + type: integer + enforcedTargetLimit: + description: EnforcedTargetLimit defines a global limit on the number + of scraped targets. This overrides any TargetLimit set per ServiceMonitor + or/and PodMonitor. It is meant to be used by admins to enforce + the TargetLimit to keep the overall number of targets under the + desired limit. Note that if TargetLimit is lower, that value will + be taken instead, except if either value is zero, in which case + the non-zero value will be used. If both values are zero, no limit + is enforced. + format: int64 + type: integer + evaluationInterval: + default: 30s + description: 'Interval between consecutive evaluations. Default: `30s`' + pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ + type: string + excludedFromEnforcement: + description: List of references to PodMonitor, ServiceMonitor, Probe + and PrometheusRule objects to be excluded from enforcing a namespace + label of origin. Applies only if enforcedNamespaceLabel set to true. + items: + description: ObjectReference references a PodMonitor, ServiceMonitor, + Probe or PrometheusRule object. + properties: + group: + default: monitoring.coreos.com + description: Group of the referent. When not specified, it defaults + to `monitoring.coreos.com` + enum: + - monitoring.coreos.com + type: string + name: + description: Name of the referent. When not set, all resources + are matched. + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + minLength: 1 + type: string + resource: + description: Resource of the referent. + enum: + - prometheusrules + - servicemonitors + - podmonitors + - probes + type: string + required: + - namespace + - resource + type: object + type: array + exemplars: + description: Exemplars related settings that are runtime reloadable. + It requires to enable the exemplar storage feature to be effective. + properties: + maxSize: + description: Maximum number of exemplars stored in memory for + all series. If not set, Prometheus uses its default value. A + value of zero or less than zero disables the storage. + format: int64 + type: integer + type: object + externalLabels: + additionalProperties: + type: string + description: The labels to add to any time series or alerts when communicating + with external systems (federation, remote storage, Alertmanager). + type: object + externalUrl: + description: The external URL the Prometheus instances will be available + under. This is necessary to generate correct URLs. This is necessary + if Prometheus is not served from root of a DNS name. + type: string + hostAliases: + description: Pods' hostAliases configuration + items: + description: HostAlias holds the mapping between IP and hostnames + that will be injected as an entry in the pod's hosts file. + properties: + hostnames: + description: Hostnames for the above IP address. + items: + type: string + type: array + ip: + description: IP address of the host file entry. + type: string + required: + - hostnames + - ip + type: object + type: array + x-kubernetes-list-map-keys: + - ip + x-kubernetes-list-type: map + ignoreNamespaceSelectors: + description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector + settings from all PodMonitor, ServiceMonitor and Probe objects. + They will only discover endpoints within the namespace of the PodMonitor, + ServiceMonitor and Probe objects. Defaults to false. + type: boolean + image: + description: Image if specified has precedence over baseImage, tag + and sha combinations. Specifying the version is still necessary + to ensure the Prometheus Operator knows what version of Prometheus + is being configured. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same + namespace to use for pulling prometheus and alertmanager images + from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + initContainers: + description: 'InitContainers allows adding initContainers to the pod + definition. Those can be used to e.g. fetch secrets for injection + into the Prometheus configuration from external sources. Any errors + during the execution of an initContainer will lead to a restart + of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + InitContainers described here modify an operator generated init + containers if they share the same name and modifications are done + via a strategic merge patch. The current init container name is: + `init-config-reloader`. Overriding init containers is entirely outside + the scope of what the maintainers will support and by doing so, + you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run + within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The container image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. Double $$ are reduced to a single $, which allows + for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. + The container image''s ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: + i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. + Cannot be updated. + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. "$$(VAR_NAME)" will produce the string + literal "$(VAR_NAME)". Escaped references will never + be expanded, regardless of whether the variable exists + or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must be + a C_IDENTIFIER. All invalid keys will be reported as an event + when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take + precedence. Values defined by an Env with a duplicate key + will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set + of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap must be + defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each + key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + image: + description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management + to default or override container images in workload controllers + like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. + Defaults to Always if :latest tag is specified, or IfNotPresent + otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The Pod''s termination grace period + countdown begins before the PreStop hook is executed. + Regardless of the outcome of the handler, the container + will eventually terminate within the Pod''s termination + grace period (unless delayed by finalizers). Other management + of the container blocks until the hook completes or until + the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: Deprecated. TCPSocket is NOT supported + as a LifecycleHandler and kept for the backward compatibility. + There are no validation of this field and lifecycle + hooks will fail in runtime when tcp handler is specified. + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Not + specifying a port here DOES NOT prevent that port from being + exposed. Any port which is listening on the default "0.0.0.0" + address inside a container will be accessible from the network. + Modifying this array with strategic merge patch may corrupt + the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. + Cannot be updated. + items: + description: ContainerPort represents a network port in a + single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP + address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If + specified, this must be a valid port number, 0 < x < + 65536. If HostNetwork is specified, this must match + ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in a pod + must have a unique name. Name for the port that can + be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + securityContext: + description: 'SecurityContext defines the security options the + container should be run with. If set, the fields of SecurityContext + override the equivalent fields of PodSecurityContext. More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent process. + This bool directly controls if the no_new_privs flag will + be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN Note that this field cannot be set + when spec.os.name is windows.' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by + the container runtime. Note that this field cannot be + set when spec.os.name is windows. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent to + root on the host. Defaults to false. Note that this field + cannot be set when spec.os.name is windows. + type: boolean + procMount: + description: procMount denotes the type of proc mount to + use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. Note that this field cannot + be set when spec.os.name is windows. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root + filesystem. Default is false. Note that this field cannot + be set when spec.os.name is windows. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value specified + in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. Note + that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. Note that this field cannot be set when + spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod & container + level, the container options override the pod options. + Note that this field cannot be set when spec.os.name is + windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile + must be preconfigured on the node to work. Must be + a descending path, relative to the kubelet's configured + seccomp profile location. Must only be set if type + is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - + a profile defined in a file on the node should be + used. RuntimeDefault - the container runtime default + profile should be used. Unconfined - no profile should + be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options from the PodSecurityContext + will be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is + linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should + be run as a 'Host Process' container. This field is + alpha-level and will only be honored by components + that enable the WindowsHostProcessContainers feature + flag. Setting this field without the feature flag + will result in errors when validating the Pod. All + of a Pod's containers must have the same effective + HostProcess value (it is not allowed to have a mix + of HostProcess containers and non-HostProcess containers). In + addition, if HostProcess is true then HostNetwork + must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully + initialized. If specified, no other probes are executed until + this completes successfully. If this probe fails, the Pod + will be restarted, just as if the livenessProbe failed. This + can be used to provide different probe parameters at the beginning + of a Pod''s lifecycle, when it might take a long time to load + data or warm a cache, than during steady-state operation. + This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + grpc: + description: GRPC specifies an action involving a GRPC port. + This is a beta field and requires enabling GRPCContainerProbe + feature gate. + properties: + port: + description: Port number of the gRPC service. Number + must be in the range 1 to 65535. + format: int32 + type: integer + service: + description: "Service is the name of the service to + place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + \n If this is not specified, the default behavior + is defined by gRPC." + type: string + required: + - port + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. + format: int32 + type: integer + tcpSocket: + description: TCPSocket specifies an action involving a TCP + port. + properties: + host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + description: Optional duration in seconds the pod needs + to terminate gracefully upon probe failure. The grace + period is the duration in seconds after the processes + running in the pod are sent a termination signal and the + time when the processes are forcibly halted with a kill + signal. Set this value longer than the expected cleanup + time for your process. If this value is nil, the pod's + terminationGracePeriodSeconds will be used. Otherwise, + this value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates + stop immediately via the kill signal (no opportunity to + shut down). This is a beta field and requires enabling + ProbeTerminationGracePeriod feature gate. Minimum value + is 1. spec.terminationGracePeriodSeconds is used if unset. + format: int64 + type: integer + timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer + for stdin in the container runtime. If this is not set, reads + from stdin in the container will always result in EOF. Default + is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the + stdin channel after it has been opened by a single attach. + When stdin is true the stdin stream will remain open across + multiple attach sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until the first client + attaches to stdin, and then remains open and accepts data + until the client disconnects, at which time stdin is closed + and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin + will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the + container''s termination message will be written is mounted + into the container''s filesystem. Message written is intended + to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. + The total message length across all containers will be limited + to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be + populated. File will use the contents of terminationMessagePath + to populate the container status message on both success and + failure. FallbackToLogsOnError will use the last chunk of + container log output if the termination message file is empty + and the container exited with an error. The log output is + limited to 2048 bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for + itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be + used by the container. + items: + description: volumeDevice describes a mapping of a raw block + device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container + that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim + in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. + Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the volume + should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are + propagated from the host to container and the other + way around. When not set, MountPropagationNone is used. + This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves similarly + to SubPath but environment variable references $(VAR_NAME) + are expanded using the container's environment. Defaults + to "" (volume's root). SubPathExpr and SubPath are mutually + exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which might + be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + listenLocal: + description: ListenLocal makes the Prometheus server listen on loopback, + so that it does not bind against the Pod IP. + type: boolean + logFormat: + description: Log format for Prometheus to be configured with. + enum: + - "" + - logfmt + - json + type: string + logLevel: + description: Log level for Prometheus to be configured with. + enum: + - "" + - debug + - info + - warn + - error + type: string + minReadySeconds: + description: Minimum number of seconds for which a newly created pod + should be ready without any of its container crashing for it to + be considered available. Defaults to 0 (pod will be considered available + as soon as it is ready) This is an alpha field and requires enabling + StatefulSetMinReadySeconds feature gate. + format: int32 + type: integer + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + overrideHonorLabels: + description: When true, Prometheus resolves label conflicts by renaming + the labels in the scraped data to "exported_