From 43990d7851d17663b710d970a71ba047886b24e2 Mon Sep 17 00:00:00 2001 From: Lucas Lopes Date: Wed, 8 May 2024 10:26:05 -0300 Subject: [PATCH 01/13] Emptying release.yaml before release --- release.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/release.yaml b/release.yaml index 23ff6ab68b..8b13789179 100644 --- a/release.yaml +++ b/release.yaml @@ -1,10 +1 @@ -rancher-cis-benchmark: - - 4.5.0 -rancher-cis-benchmark-crd: - - 4.5.0 -fleet: - - 102.2.4+up0.8.4 -fleet-crd: - - 102.2.4+up0.8.4 -fleet-agent: - - 102.2.4+up0.8.4 + From 7a73b361625d622f88eed390cfce005f49289c2e Mon Sep 17 00:00:00 2001 From: Alexandre Lamarre Date: Wed, 3 Apr 2024 18:54:05 +0200 Subject: [PATCH 02/13] [dev-v2.7] bump observability chart versions for release 2.7.13 (#3603) Signed-off-by: Alexandre Lamarre --- ...cher-logging-crd-102.0.3-rc1+up3.17.10.tgz | Bin 0 -> 83285 bytes .../rancher-logging-102.0.3-rc1+up3.17.10.tgz | Bin 0 -> 14326 bytes ...er-monitoring-crd-102.0.4-rc1+up40.1.2.tgz | Bin 0 -> 387268 bytes ...ancher-monitoring-102.0.4-rc1+up40.1.2.tgz | Bin 0 -> 405663 bytes .../102.0.3-rc1+up3.17.10/Chart.yaml | 10 + .../102.0.3-rc1+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-rc1+up3.17.10/.helmignore | 22 + .../102.0.3-rc1+up3.17.10/Chart.yaml | 25 + .../102.0.3-rc1+up3.17.10/README.md | 132 + .../102.0.3-rc1+up3.17.10/app-readme.md | 45 + .../102.0.3-rc1+up3.17.10/templates/NOTES.txt | 0 .../templates/_generic_logging.yaml | 121 + .../templates/_helpers.tpl | 179 + .../templates/clusterrole.yaml | 318 + .../templates/clusterrolebinding.yaml | 18 + .../102.0.3-rc1+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-rc1+up3.17.10/templates/psp.yaml | 34 + .../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-rc1+up3.17.10/values.yaml | 240 + .../102.0.4-rc1+up40.1.2/Chart.yaml | 10 + .../102.0.4-rc1+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 +++++++++ .../files/crd-manifest.tgz | Bin 0 -> 191637 bytes .../templates/_helpers.tpl | 50 + .../102.0.4-rc1+up40.1.2/templates/jobs.yaml | 152 + .../templates/manifest.yaml | 8 + .../102.0.4-rc1+up40.1.2/templates/rbac.yaml | 76 + .../templates/validate-psp-install.yaml | 7 + .../102.0.4-rc1+up40.1.2/values.yaml | 17 + .../102.0.4-rc1+up40.1.2/.helmignore | 28 + .../102.0.4-rc1+up40.1.2/CHANGELOG.md | 47 + .../102.0.4-rc1+up40.1.2/CONTRIBUTING.md | 12 + .../102.0.4-rc1+up40.1.2/Chart.yaml | 128 + .../102.0.4-rc1+up40.1.2/README.md | 739 + .../102.0.4-rc1+up40.1.2/app-README.md | 46 + .../charts/grafana/.helmignore | 23 + .../charts/grafana/Chart.yaml | 29 + .../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 + .../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.4-rc1+up40.1.2/templates/NOTES.txt | 4 + .../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.4-rc1+up40.1.2/values.yaml | 4190 ++++++ index.yaml | 189 + packages/rancher-logging/package.yaml | 2 +- .../rancher-monitoring/package.yaml | 2 +- release.yaml | 9 +- 577 files changed, 164662 insertions(+), 3 deletions(-) create mode 100644 assets/rancher-logging-crd/rancher-logging-crd-102.0.3-rc1+up3.17.10.tgz create mode 100644 assets/rancher-logging/rancher-logging-102.0.3-rc1+up3.17.10.tgz create mode 100644 assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.4-rc1+up40.1.2.tgz create mode 100644 assets/rancher-monitoring/rancher-monitoring-102.0.4-rc1+up40.1.2.tgz create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/Chart.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/README.md create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging.banzaicloud.io_flows.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml create mode 100644 charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/.helmignore create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/Chart.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/README.md create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/app-readme.md create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/NOTES.txt create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/_generic_logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/_helpers.tpl create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/clusterrole.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/crds.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/deployment.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/aks/logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/eks/logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/gke/logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/k3s/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/k3s/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/kube-audit/logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke2/configmap.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke2/daemonset.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/root/logging.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/psp.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/service.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/serviceMonitor.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/serviceaccount.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/userroles.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-install-crd.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-install.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-psp-install.yaml create mode 100644 charts/rancher-logging/102.0.3-rc1+up3.17.10/values.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/Chart.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/README.md create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagerconfigs.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagers.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-podmonitors.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-probes.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-prometheuses.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-prometheusrules.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-servicemonitors.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-thanosrulers.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/files/crd-manifest.tgz create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/templates/jobs.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/templates/manifest.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/templates/rbac.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/CHANGELOG.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/CONTRIBUTING.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/app-README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/dashboards/custom-dashboard.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/_pod.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/configmap-dashboard-provider.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/dashboards-json-configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/extra-manifests.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/headless-service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/image-renderer-deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/image-renderer-network-policy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/image-renderer-service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/networkpolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/nginx-config.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/poddisruptionbudget.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/pvc.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/secret-env.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/statefulset.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test-configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test-podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test-serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/templates/tests/test.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/grafana/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedKubelet/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/hardenedNodeExporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/k3sServer/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/kubeconfig-secret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/pdb.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/podsecuritypolicy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/stsdiscovery-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kube-state-metrics/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmEtcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmProxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/kubeAdmScheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/certmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/pdb.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-adapter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/daemonset.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/prometheus-node-exporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2ControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Etcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2IngressNginx/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Proxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rke2Scheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeControllerManager/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeEtcd/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeIngressNginx/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeProxy/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/pushprox-clients.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/pushprox-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/rkeScheduler/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/.helmignore create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/Chart.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/README.md create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/scripts/check-wins-version.ps1 create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/scripts/proxy-entry.ps1 create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/scripts/run.ps1 create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/daemonset.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/prometheusrule.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/templates/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/charts/windowsExporter/values.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/ingress-nginx/nginx.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/ingress-nginx/request-handling-performance.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/cluster/rancher-cluster-nodes.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/cluster/rancher-cluster.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/home/rancher-default-home.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/k8s/rancher-etcd-nodes.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/k8s/rancher-etcd.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/k8s/rancher-k8s-components-nodes.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/k8s/rancher-k8s-components.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/nodes/rancher-node-detail.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/nodes/rancher-node.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/performance/performance-debugging.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/pods/rancher-pod-containers.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/pods/rancher-pod.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/workloads/rancher-workload-pods.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/rancher/workloads/rancher-workload.json create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/files/upgrade/scripts/delete-workloads-with-old-labels.sh create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/NOTES.txt create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/_helpers.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/alertmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/ingressperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/psp-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/psp-rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/secret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/alertmanager/serviceperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/core-dns/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/core-dns/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-api-server/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-controller-manager/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-controller-manager/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-controller-manager/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-dns/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-dns/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-etcd/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-etcd/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-etcd/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-proxy/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-proxy/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-proxy/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-scheduler/endpoints.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-scheduler/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-scheduler/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kube-state-metrics/validate.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/kubelet/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/exporters/node-exporter/validate.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/configmap-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/configmaps-datasources.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/alertmanager-overview.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/apiserver.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/cluster-total.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/controller-manager.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/etcd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/grafana-overview.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-coredns.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-node.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/kubelet.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/namespace-by-pod.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/namespace-by-workload.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/node-rsrc-use.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/nodes-darwin.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/nodes.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/pod-total.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/scheduler.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/dashboards-1.14/workload-total.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/grafana/namespaces.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/certmanager.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/deployment.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus-operator/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/_rules.tpl create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/additionalAlertRelabelConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/additionalAlertmanagerConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/additionalPrometheusRules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/additionalScrapeConfigs.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/csi-secret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/ingressThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/ingressperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/nginx-config.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/podmonitors.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/psp-clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/psp-clusterrolebinding.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/psp.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/alertmanager.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/config-reloaders.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/etcd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/general.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/k8s.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kube-state-metrics.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubelet.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-apps.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-resources.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-storage.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/kubernetes-system.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/node-exporter.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/node-exporter.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/node-network.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/node.rules.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/prometheus-operator.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/rules-1.14/prometheus.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/serviceThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/serviceThanosSidecarExternal.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/servicemonitorThanosSidecar.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/servicemonitors.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/prometheus/serviceperreplica.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/clusterrole.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/config-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboard-role.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/hardened.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/upgrade/configmap.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/upgrade/job.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/rancher-monitoring/upgrade/rbac.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/extrasecret.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/ingress.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/podDisruptionBudget.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/ruler.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/service.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/serviceaccount.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/thanos-ruler/servicemonitor.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/validate-install-crd.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/templates/validate-psp-install.yaml create mode 100644 charts/rancher-monitoring/102.0.4-rc1+up40.1.2/values.yaml diff --git a/assets/rancher-logging-crd/rancher-logging-crd-102.0.3-rc1+up3.17.10.tgz b/assets/rancher-logging-crd/rancher-logging-crd-102.0.3-rc1+up3.17.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..87197f4b3516a4bd1e437794ef9611b64609b537 GIT binary patch literal 83285 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�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ⅆ{5kV@SXA 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
n^*2nLo&IMC~}SgbZRs9W%dyOEb6 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 Iowy+X3(Z0^6951J literal 0 HcmV?d00001 diff --git a/assets/rancher-logging/rancher-logging-102.0.3-rc1+up3.17.10.tgz b/assets/rancher-logging/rancher-logging-102.0.3-rc1+up3.17.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0c193bae4be1b27b549ac8aedcf5718d83eab333 GIT binary patch literal 14326 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 literal 0 HcmV?d00001 diff --git a/assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.4-rc1+up40.1.2.tgz b/assets/rancher-monitoring-crd/rancher-monitoring-crd-102.0.4-rc1+up40.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..30d2b282cc949b50c23eaaf9b402c36c635df51c GIT binary patch literal 387268 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

gm)q4Kxr}6J!FQm634)v& zSOT2bUpEHgK1Nh<&_Tp`jAY{8f2YCx%p-_F#A?9*S{nQvhnpy1Ada{qkA(sw`~V6D z;sFc-OpIiYp3AuZj$XdR+i9Uggt;^g!%sGI03ivzs8Aw^!ragK?TQEv-77n_M1*8 zsOT(RPnnOnPz1jr@rV=wV&0w*e}E!E`v|pSQ!pAW5uKcug|nWa1M02TgRqaf-NN+T z`PI_5*ML4gX@?<1`2`2q(pOAYMeRS*w(;$skhgz+q;&-Bzms43p1<=7Yvf~ho4tHE z<~AjFZ)s&&nq$DLHO}^}R#Xorsq~CQDg3YjGiA&9I!d^=O3OoJ*<%F=IsYn$-661i5SU7XqfikDIJ%gE1zQ`5; zWK>)L8~Xo|tx@rc|0G+?C|_hN5-c(97?O%~2b_u&*n~_KcvKwjj43hBml*{ZC}lPP z=#p9$=n-v4@ddQC4C*hyP{i>svh{`iC0l^}|0Y}5VKBLWrJ8@e)0dPlvK1MKnH$;v zKa(wHl>eD*{iEW4k}YPGFS3;nyR->sF5_qUks7<3{)YFB3NvcI)co`0;Q9V}t{$^1 z>SJ%^p!`2=31LK6747qT}+Y|*0u)eo=Jq%zi9@! z$4PX>THW%KrH?oKHJf_UvOb@)R~)$m|7NqkFla*YotQ?8h&$jLB&G~CDi~$v1d@9O zdFl#PwrR2cl>f3W!4CcWaSM3@*AYjC^09r)rl40e;hD(2>XCrgJ(p=9vLGp$xX7_T z6xl7^9{Wsnc2zzowk`$U(3RFeU*4K5d`uLI$Wpwpu%)>;ybefVFhl?f+$aOkS1BnD ze_;n#nn%pW`UU^r`6n^k-G9wL;4g@A6~Edad;88$e?_e6SR4;@BDT9Pzw%cmK9Kzk z9n|)vAh`V_5JNg|>>1=gK)%Mm{mK{i32E z`}_lb>({kPOA*Qhw1P;61T4 zl6P!DLV4Hybxi05bl{>_^Xhh8&mS&2fdMDa1O*(e;&cf=_tK6R&Mn2q2yfpqn7)># zN7VX)8E&90tpHOZrS|EDuBogAbrU?QsSro zh+OG}H`1RNryg2t{zUV0!f}XuUVg*De<2nLF)KtUgbuHD20=6OGo1f<-d|{=dC34{Pi{d*fFnV%+dr0j6YcUqd?GuS-7C1U(mP?5j62 zVNeaC0L88nLv1(Nf!nWPDsuD0!gl`!h#H0e-5bBKuiiMI{{6q$5Smdb&_7Zs1pZ2y zT|x`5bpsBs<@ukZ+~Dm0+8h5-@jrVb)gW_C9&Hda5$4ItfIBjhaU~sH1iGg7Ped8r z&ZNMyD#)cxJX^mf0(lqofp0bP1Yx+#HUrhQlnvxqbC2<%^tm2ai7#H(HpXNwV~Cx0 z7v4GBt(F?TR^MfLKmEOiF9|e*AzFn*s8we=yxc0hiQE}TZhSr;KjTygpc25op^Bgs zBOt4=N98X1@1`aaN3ryV{w`A~WIeVTq&Em-OjjgcpdyBiSHD?GaqM3GwV*M26Fspy zj&J@0D4&kqon^Tqu`+eVf#%W}Q=NNJf+^hr%&(azlS-ALCmQ z0ZSzzG|o_#L%av4s4n%Al~KJeCB*e68g^F}KPu1E$7=1KmXt7=n-B`>qGh&d!U0xi z%@+2%5KDQOt}OP6Ix^0~-#v8HMEO#LLDjjQFwtn&p}lK{)uH+{A{OhPQ3+rs>%}N1 zzb&Y_IYpGeX>{c>g&|56i6Lf;EK8%rr_-*mUxgLtdYyZa%5}n(|%RSsF5-|LE{g2D@bJGJ?l~?u>UrFOs-A5Yfn!)4qW*;e3I`?0!}=zm-0MD3503JP3h%0dApn; zCN*B3E|FcOECR|#z9FuJ+}R;u63_nPfh#C+&B|rA*K!|edx2#|5>jMe`IHkdmdMQ& z+cMM-o1C)7idX{m{B|C+rN>w7s({HspoiD=o zWL+=Njn*3_h2OqG6v;j7luS&7A)lE@dS)oAB|I<_p?>If)mi)*8Zup9v%1hZO%r}) zn&CHh{V^SpAd9?bEix;8-)8Z(Q`UtLGrjrwQZ}W=D5Q7)`NB_d{y7)IE8cnU9-h9t zUU6jzeGf0QT^T@xGSLNFT+8Tp3fs9p_^OmC?&u4L$++&S?69`UR$J{-5y0f3T18wL zc4J{ww5Yask?AIDUo%pnaUA`1Bva|wCXgy2e0y^@z~Es8gi=S-c5HhEntcjP#_9Ll zbI12A3M3e&t{3!TR<-@~;=<`P|H4_?s$ptHCmMx*rGon%Iw`8SpaaA8P_}^5h#9#j z|6B>%Y)W-=7rve5MRIp3@|oh9NGgqF5Bm8rzPaH$SeCDpzNneGF*9+1Q@kOX6UoYE zwh;3ab5#^dytG&lq}myoM@?Jd?0gHH?Mzn%x_E{H+Z5$qXbBsp?K^1_Gv&?kt=Q+o zKtVuN&<&}eQwPx{(K?Py_}6aA!q(|Q6=(Rb&>QExkTuI?YL(8_geD^+?=i9{=zO+= zoi$IP$N;KdQ=avc@P)&udUK)Vj{4!UGy^>9h*+AacKfZ*p@kpS4M~PJS}E7>2d6Y= z0@i=XWREnwhG~EvvIarst(K~U3i_P4JF-v@?}DD}LA`c(=~3v-PV&d5W|!3_jKE)0 z>op?yaJv22!K3ys94C}iXlKhp>Q_1JVES*OHVVBSY|Kh3(c9p;#|&wt1HiPT9*Nh$ z+Bnvf>4vGyI3l;|;&?x~*goQW$~%=X8b4|n9sm^A zTe3$=!SgMEOl9qDY=^D4JVG#2%_YLthOK|)&66O!dwSZRxyJP2^u9YDF_Zi7jqcN{<=R&?xDMHS z^j@+&B7pK#gt76n8&b8mx@X>%MlOzot3J(&hB0cnZy&gRs{b}bDb{cM+Qe?^pkif% z=OEZJZ};r(6?72^D9Ab;zen4NjBgHSw4mwVe9Pd%(9Jwwm&eG-FKJcg>2$6-FiT2L zLJ4YoTl@*bGFS=Z+9B{m`41VfAuFkM#maB8lCSJZLER1yhrbC4=0o$CEHPHZbm+46 zO8qxvD-IOMmaYYj<=h^^XU(|ZW~nXh_T$gEX=+JW7$l860yQC)-VBEfD@igj+_tLT z@BG^$uKy+^RLI-4j%32#m*pD=)^rLmP_x_=Jx@os|FHvazLqu*8i^|CVY1wp%+=K8 zJCMk(yMeblLb$x1wY6Mqdkxt?2eHavf)Tlp8_BwNvQ< z6RG9 z4iSH>5bdw*1!>e3&30FSN>5KiYbr}wvRE+oj6_vStQeCO> z$#Co>942nbHRXUq`nr_@G;&G_Gx1s8>6 z#8FF_J6{EMa@i;j6*{&_l3Pi7b!+g_@vn4+I?jP5CpLf_ycP%a`9*6#Ru;=0S_zqZ zIC<+WG$Y21IHL73+C2HJv%TA z5|Md2J2o>pg(#_YO}}Ei5&8F+xX#Foqf*U^+-4Ayb$+3e-UN!v zF)9smNB;P95Ha=C_3xi@P;$H38*Yd8B^KaVH76s6#qf6pCB zes3lm7wo>j6|eZ^%%pq3siNwgM9p_u9blkQ-DHCp)gDLFmr}rW6i;ML+1ueD*culU z$}&rckZQTP<0cbDrghLQBu*~bs=Sc;m|HlTRnpEvuy-<#gB%Al!n07_PVUUEc7rs- zgq=Yy^naLo$0%ExCS0&>+qP}necHBd+qP}nwr$()KJC+<{@y!x*8JF2kr@$LwO6iP ztM(HSPuSZP{)W(3 zLA2UIaFGnASBHUx(M=#Ah zFZYz&yj0@0kPX){R_$I=ijMXIf0|uGpkS%N2yn#7EmGIM_`~BTU7|{o>p-OEVDgPq z)JNGw2mYJvPGHgxmSphJbD*5fXvKC8SiSY{_Z9KuDU`MI>Oeu+GAk>}kRWDlR3Eo7 z8CF9S!vs~f$R_1|3+#9AXDUi-_^Moxf|?xB{=~1#<@#Rif$3&@EC|K>#BhR+jUH@b z#%+ShVe*KyIbqFAnOh$9Pl7l!PypMy6b`CgT;^$E)gaRiAVw%yFYo9F_)j~e^hZvc z2P+bpf|&H~C!j`#7F&yE>E7U`c0S+UlEj4G_y?$^hdwP*2<@#0EqLVvcTjug0|&r? za3P!v)BybNm=8=iAMiON?8ymmf66{o18x=1d?S8krv03o(gv~C-Mp)?5IL8UG_f|y z`Wqz!{iT_Z6C)oR>s{eGAsU$!;pTZ+!P1P2G7pPKWvhH6@ygmrxP7z@n{M-abIyV3 zUZYGp>Nz-QEb) zRX7r;^kV4x=BOkNBy|Wmg`V`Nq%4s^wbn?Ija;}9?2#XBVvM{A34Itm3b^U|&AL%^ z(i{zW8`I80pZaFzX(W(2;gC!Xr!g;{bYQuMSKervyUjr<&8)jsjWbqP_;YiJ68-Xv!{Zvo46q=J*Vt~5DH)od2{a(!{V z!pzIG1~`VW#&ZOjM|<_CUq>^~LOpw4-!oscE!{1lS0h7{ZG{5B=ELtVy9cbl6eQax z#J>LYKVc83&n*jYmQ?_p3eY(p4*-{TnzLHeTB6M(fSE|lmC})=gvRzlff35b z2;Xz4MDj9Uxa$2vGiac0*X@4t(UI-$y*H}C5E`&6LU>qx;Ac8QeKR|<#6?Y46TYfM z-xwo>VsNqX9f8%ce5P-L5<~Omi7L?)h@P2XpwprXy5c0=FTu81N*If{sUzL>#|CyYUt0@ zMb~9J76*b0yIR|$CBb57mDNrFtG$k;xqCO?FbV9lLBR^8V=a>9;!L%BGni}dgWt1f z3)?!-)pvHNnH9k(+B;Xb))vuS@e zA(dW~XouJAn@y!YRy^fP`_ez7wQn};-bZZ}{X@!IF*xM|GkbLy>KUtkS*2+zo7Zp7 z0sPifQ^+#N>KaS0lM?bxdeg54l@X6|$JMD#l|+*lse*`8sLHz-XIF{T9==xe=aP?I zP-OGXimn>nSe}{&vgewe?XD7#rbstvc$+<%sKq-DDUrtW0r%hZeR#>f#MvaQgZ-*t zTA0=*{Qfo80M;h;DFeUb4uJpn45?3TSNE1`eR2S}(#e|G_M*&r9Hp4GF<@^9Ifb!s5rk*(EzY^*9{m@$ywR30tl9AS0kelGKL2@=5GKK zTn$W3rK&i_5$nkPhVxLz#9V&%cDX17){!>eDp$4gH#4$CI;{q#~qDXT=flI zct$mgJjzTWRr*q5nmYWzvM5m4t+y;;>}l23Sog$sdwgh6*SJPD3EP_}{ODkX{!skI ziy>WJM9-Hb%E53MF;Swsue6mk3+0(BQbSwWreXt5;L}fpQhfKryCAQ@hK8lA&x7U-b456ev1iJNM=_k64uCr?S9TF5&mTZh>C2F}L?8`b~*! z+<@=%>^^PImrY;DdHzdyudT3hOuTNs;BMU?$z?oknEp*?!Qi$1q0Qa+YWm=LW7fWC z%=W#v$1taGvwFAJ*QEcpM{>(RxU+%hv;%iuv#9NWRiD8-DtS53?rjedz()wUuvem3 zSibAIs3G&2XxcW1fTgQJ z`;oK&>xWeVXd3qNNZDxAdif`73?f4^V6}RYPdngO(K^tKnOa0!pG9gs99pwvlhu+WOIg_3|9N7>;K)b|;2Glsm*$ED|pQAnju`?eM+ z?T3rTclhofWoafuycXR2%K#@yv>v21g)2dH{wuLs#Y@(El@cTo7$a@xS3xjAf_eHA za0dd9#{z614kie=27luTxq|#R?Eal1;1-Gz_-`b%FK8_8FB2FqiSX+MxIU>*%?|i~ zeyVsN`qV)+-C+Ma!n8Uf_p9#eI*pU81N~>K`RfEKKqfd&0+9i-1;7N^YKmkn0_|Fg ze0^ms`v*>f{P%T&4C|>3`I@8${8ck{7?2axYo4tU7H*PqJ*at-jf0|0|85*@11#(m z<@Za$)MFHzoSHH7tK*MfAVG@KtWkGo@j3 zM{`hn7V-ty!?u?7xM#EXnRkY~xj*#sVc=y(FQM-)o*6d`d$LQ^OC6o>J*;28>2k%s zKQiIsqenrIubtIziads8aY`T#5eRydV!KJ-&dC(xdX2ZB7vh}#!bmI}zVs6HdqyK! z3tMq?@?&0m1TcN{>Ru{8@m@YC*n6+gPf{QhJ^_bJJW_2}EIWk1|JuX@1UXX zK;6V_%bR*F$K1PHc6%SzuW-dSXg>KZy8#XL2Vt9Mgox944P6ybtkbi)YVAPJ)h@D? zDhG<&Hg>%J2^MK>o3Jk4VkO`!P|8)a2LLOR0OhJV0F|gfE0z>K`I-TiE@71_boL)5 zy`xg=Uf(~uJbgTVZ=WmA8&ONPEG^72uBI5QnvWL3V@xv3oW}5oDiR0SL<(dQB8G!R zhC-{F^_LZ%$eb#SNFqIyhn=-m?u=TPgWHHDFtSc5(7XVsU8p}>ifwQM8*d*HE}{??-tS9r6xkBQYNm0Kz0t_U+?cgqL3?IO#XokR4n`d z5#wB{`{aP+tmFwh1sV~ls-`U5_nalPD%pnoiCFAzfBMHJt3IaJP@LdvCD2dk z(hW$@Ao~krNKnzpctAUOG#dP&i5-i>`>N2Z4+A$A6|zGVbr_%c^h`i+vU)KtX-b`* z-JYwB_i{)hC#+2je+@7YG#dakv+`Nip@x@tc9TWKE=tYXz$AWRf}f5HXjTnwanE-M zxCsR*oyWr1>bI9-JAc@v&Q7$XD-}sU`A*F8YE;6*;w{n$<>BS344(ewJWLmVpg5!< z%19K?q@}0m;O#s)3~k(yxXVsRQF|EAmcj8c{D$K$Z#%Lcn2tGJ1mr{CqBtYnI(hh`$+XAohYiAFCuDPmeK~aD-QWU zQ}O>>JCwdIq=`67$|zNf0N4OG0L^4CLLQ=yP2feXa4uq9hVblcCOXV!+^GOWu05qC zNM%#+-Da1oraWphu?8dUF(ukRc!yAHavo@!f+$F7ro44|P{3C%%7kv5foVaf+{XYk zu?0`yA@~3WAhD}EPKs#2eG%k18%VRCO&AAs_5@@vx1W7g&v^!;avWpfFk=VNq{JXl z0B`@L{=`?J)whG&a@N>hp_LA9gTuBz=x?O(TL;TAYNxD0x71^Zc_~cW4_C>nA4^0; znnO}d@GkUMnf^+<@NU~-pfx(2K+rx+NM9I`!N0+p;JioXXQ=6sTmQts+WR-}x#`ZJ zn)|Qn=ATyF*~X#umOK^krVCk(r(|--z8(@rRL=z1{jNQhyy~3Hm9h~>dHl3yH+CA@ zm-f^9tu_gi_769=^J@EjY6K6Pne#B z?(-w4_k~RfDUPiu74Du4z1lUJ#m-x0h@Z4F#LeTias8Ji_5n?iHd*e55S$=G#&;Z( zV9#wxi`g5q=k>23cMe8g22^x*>tsX?l&lT!HGTK~e?^bcF@ROgrm5X=Ymk6hplnw` z_K&6lb^&9y<3`}!vzI-Da@5O3f$S}}rE<75i2VnBQ2T#hfjB+~4*KBkhWH?(WO?JE zY3wDK5@a8#VKq5oLhKbn=%{1uQxR2HMVopve+&4modisVo8skKJo2uaR*#fDiC_{6 z8Y%`nM!{mt-A8GKZ(a?{lhmXWe{Gd*TPx2r!`%}~l6wfOOHa$rjlKA;{*2ikq(WP| zo}}#+IbyUO(9eSSb$xz6j3Ahm8+E^E@G=wXYW(z+io6@Xtx0tFI;`N)>IFa8OtnOY z<^H1Q;#Qm6|J9!k=EMf!#_lWHfZJCD*8Bk2`23!wSHSlbLD`_KTjBdlummQ0oGXwR zms2)t-O&TEHQ#aS_3_Sp%oL zo$zG9!3NI1A9sL3hSdXN$f0-#(wxZ}Ao}hH};}NRx#magd&~h918W zv|Oqt;3sSgOXh;72bjt~!I+Vf$@+qpb^VR!p4EG@sF_9|vyg;7Q#`)~I}!;d^L)YP znFkUXL`+y+%^7=@(j{RKuL>2XBJj(!x|1n%ug2T|mz4m&Z)?xbhv)sFj31WckmArV88q zH>x*(xkA;OA`^D5jcL0P&~R9A@S3z^|8#Oqm-Lott>DRu#CFo@h0#Nq(C5%m%Ib#5 zqn5)Bz%09)Ehp2Df#k86g1LqLxx{_M+r&GNm|f<+%CsYEb6ls6B;q3NMcBh;#yEl0 z%OV;FC;LD#-7|E9GEU7Up89T&}L?Tdt;%agNRcX^_p8NDoKZmXm&3|ou8OJ z(m>EC3UBjrV)0=FT0~;k6fCApc-^apb5Lj_oku|pfmx*1l69Z44~^Bu!9I%F`FVOV zkw*R#s+;#2{L^wbkZC<;0EFnX@W1h6|ft{9U zdM1O|V7}y!Wu(R;j9h37X<%-eE0(!cqLBq*V-|cjaQw;JNg(1ZHBAQYM5H(u?}cF! z9KKqp(m^TPS%>2P-5lEG+8GbWzroPZj^s^~Jl8`!wlfR`=E7 zu;L|cGDCCCTirz4Zb0~l;iE!T_5v-@vKW=t1b>6_m4v|Ee20@bd%5$=qJOouamZ+VYL_mIWI zXd7`e&~@PW-L9-Hv-l!#w*0&Eu{K&a3~`Qv(r5sBr}D3Rw2S=H`uw7OP3=59(QTmq4IMFkQI7$Ny+#3!xKf6lmO2Go-+=T(YR9 za>nGA>=|}($7`R6NCxW^l4)&5#Ab4z9NCgpoYV=MUnH}b2xUc;vuyT`ioH;lvSXYFmTmMhCV>b)w0x1(V-c)aMI|#kbt^PT!;ga&j zjb$Y~mw0x*N-LYthJBEUGl{@PU28+=nLVODJqU$+lM|s~8%56fB9@LM?W8hRlb+~l zX6T&tPhO9Y8WyXm*ydE*W*=4R6XVMtlr?*s(}yk+bgPqPA(ZN3r=6QNNZ%Z$Q7*D5vj~cmYZ-11k5yt zB3ePFU246$cOnUmm+(iH(YdLQs-2aCi7=8#)Yb5p#wjIj&UwFn-+frqHd z#E*177w)so4Pejj%l8L<`d)57mzxu?oN``mqF`+2x?(xHgEO!kiLQ1L2=;Sb^c`)Y zaBOF#tpU=(4nguu7dpmhY-f0}7-^V8upA72K03j5qHy7E``ExuRmw5lP2eLYH;0Xj zTh<0X-mDmbpwTnydtlquC!-n=;U zs8+D@|Mu>ffJ+K6rbvKEJh*oxQQ{^$IQus`Ji8bVUnZjql;E?D9;`Vff-xXu_WeLD}?6CsxoC ziMWxOZ7XlW!$;elMtH?V3T5SGRLwqU@F?$e=@h=3td|J@`Q~YNx7X+Mo#(f)^>HCP zj#Zb-uD$D-f-NDlddhgjxNuDfQs&Wrp{L2kBtcc}$eHU@F-t$m&y1I+2Xau; zVpnC{2{nY_IYP*`o_IUKl+Ko!gpw7vcMfVF&;!~7m5;OoRf%FC#!W)Bk~v{;6m8?? zuxRAGW0Q!WcDOs2&t70x46`$Y)ISfimLdChdq~O1QPdDkm{H>crrleBzX3 zrL(nfXNH{x!)immQTE35`0s3x28QPQCWW zsDS!k68Q)il?bSr5v)k-0$3;yaxO&~bmfP9lkn#IZ=HTJ0XC&n!eA!RPZj0NIhc0z zmBQwZ$b;}RswPH7N>$rEP&j^%EC&l2y|yz|iT@%+ODF`_!olQ>NIk9*ZX#F`pD+|phO()|GKz^+u&klCor)d z8XAXvqfjP9C39%_pHzb?7)h~yI7Y62k5Jy-CPqos#m@;-pkMWkVqXwf- z1a+x=0n7%)&3XX1RcRi?T5Z04urXyVIDxHyr1~@W^Nl%Paq1UbQpYmoo}WXPeq>X+DEaz1Nv-U*pW22wP^ED_Mb$$>O*aSgsi+b_6bxO0y_{MeeLaR-;elz0@HuOjy-UfR5*6HY+>FC2DAv_JTns9zCzi+zdOdm*Mt z4I1k^&r#Kooz5_PW^LeLgmU)sFZ1a(;~@uj+s(zhDy@LKxjg3(>p}yoOq26`t2M^_ z<&~$6R-UL^Y9{lz&bvW2qOXJ*shoEm@U`PbzlF>@yE@i+ixvE?TUDQIJo#l9tDuEI zL-h^0oHCca#B;n|OvPA-y!|oP2$0M$mo>~&TiT@Q*&L!O1l|lz&88K=J`~H_ID3FL zyo;K}b1cgjT9d-2kJhSSD#3z&_EMD9y+aipITj}MR>i`$dus`Xids%Zmn35;BX=yA zM&eKz%=k{G*vGS^O-%rwA$bCI@jKDLCBL5!q9Cp4rKb!$rZK zu~Sj~0@qno`L!a$?FKuN?w8nlA2Nn3hiGPlX)QmYgEk{$Z1kMlbbThHxfd~JXvIl0&+ya+oi`9)I>W3lyx;U z5m+V&AtKeGqPDqUWy~ZZ_Lggyv@95Mn?Rtd>!h)SbV8LR#EMWyBlNi=Ys)ZX^w z2&ajI5J;9$Hv4Ur0R|P3(&Rlsclu>}LOo$v+4Ss(-^*_Zr_JUW_DB!($kkS|#?_{b zerd|>M@_sXMFlzRIfnEG z@9<=Qzx!Jb_E}L=NG|kC$;)uRQX-xTL^l7s9xY_r7S$s7G(^-gp^YTTLHqz__es-hD9qrY)oWt*LYzrK1Y7E3^Jzgyr0xhIBfME0IY ze3DTN{0*t^tTLDuQ_&t!d?D4G#AB!3p45%jiU3$ECPp9MM#C=Afw9Yo$*8(y`S|Jh zVqzmUhMx15jx*p0~I^{Q4&scET|;6D=tC8g?Jlkoh#L;kYs`N*`)Zd zR=Hg*HcGbSvb?-67bm%lnc1;!Br@z2CpmjK!=+wp0xTlUiZB(gwparorx?JOa3RGQ z7tX^w@ERL2Swy9FqFKKr#S(-{@xI&jMdpG~9U}%^ar)P|WkzRfO#Pl5qzK7tdge83 z-nc{DTRt3KEyCU$deG4b`ZY z4u+QUlr96O28=Qjd77Hj1N=sM0{wa6`oB)q5f%?a-B*&_Bs=nAmuJo*PGvaaP+6!j zS;MSZ?o#MeF$;~v7F@$VkkMNgP3zge(NkS@8X@9Ki@bjeHV;&?d+M~*#F#JTXc!TK z`+3r_=lyZp`4dw}TTio(6y##;|XcDYlMVvScyd zM7Fn_C*UFJB`spQBx6Q5=a?uE2Z-ThV$UPM)1*^mENmDFcPu;`myVUo0-#zm!%Ma6 zJ7s-FUtHVcEwHBKlK;{sI@dCh+gGTUIIKA_2lD@1$ou_U!U?;eP!Ob}-_`Z@`+An9 zV3gWe0XL%%OtepQKL0>Cu);;~a`VzcW@1g6Hi!N4Bpq4>KRr_}U;+l?OnxbCy3{mn zLw;^U6StGI)zu{gEn@2Paa%fd63A7h1vj|9(6j+NiiqiWF(=8e^?b8PfJGMf3yHGED!+Usp`Hfx-$3} zNm)l;b9C0ulUx*uexlfJ%heOQCiSVV+-ON1*j3cxQ~4YW z7k3#*U6d$tPP4osBJ~);SzKKyVNWnwTfvl^V~n$GY;iJ$C|y>v&t*f!A|#m0%*@Hk zXhJe|$xRiqDjf##4Y+{eRm7#FD1MP{JaL9ys;SUq_OH^%Z*MgZQ)A-iv`8D1cv6vN z7Nb&i!t8a)AEZiq4WwC*gg$8`^Tb*9LagG)Q zow8v4RiD1JaKFnZKK8M2@9W%+k9+r@*!zt0KgsJ-KQ8t)A?|m&;OzXj=fv1?7AMzk z*WCX#{(f^0`Stv!cI_7DKkQyp6AO@^s_6r&Bb=))(xUU~*pR4Q$~SZdvN5Qhl4!lX zUJc+&-@=u{k$ctY1Ok6nh{pLL$+4YPMF(r29L zm~@?V{f@14yOYlEIJJhchLY%$fXi=`Y#E8)cxMz{XTA;Iaib@rkR_m8BrlF`LfMeTy=sp(aX zo|`Edid?9pJqffLU<5v6ieuWAz10YW6uQ(xe4~}Umq=z_)W94o@_Vx@@^(2)yYBdg#ITt9c=X@wid#xiHVf-WoNrp!F4dcuahV~bp#~NCY zPZcko5amH0lJ~KS;8rYeePLdZzE_9o#*G&?28T+t2dl}*bEn2Mvj!h)bnH(X#qptq zWQu9af_C+Gwn-=ydX+~;-UvP8HPo7o*CM6TwQFK)PsL%^jMqOrQ%~TS^>_I~61jzf zqIajncsYm{9=Uw-XPUD0(WD@5$xdZY{W9!7k_sP+fm{=AFTwh=PXch)ZrXVp^x;Y6 zJv?H6O@I1ln)7FJC2T*yt;o1I$UrRMQ1d-llt+tMrC`TpAV!P93>5T2f8!N&v(gM$ zc}{yhSe&Q{VJ>Lv{<-i_g1qso_eespeuG!C^XC!GS0MbWF2(HHyh3vn4?3>>@bkj- z5JQhXQJ7d)wG`+XY^02YwV<+2+gn}NzvS>H@h0%@0Osfg6I-jKQ=z>Ng-~q%QsGX& z&#$B)V=3qfgdR~dm5dgN^DyAjz}N`@I4P-S?xkQemW7Vnke;w9Z)^4V`|RX6V@>VZ zJqS&yx{ipaH_E3>!|dD?sIZ`X?~wUnNu0GA<8-?dV^hbcn@uis365EBBUmy0{61?? z7J|&jW#nM*RvF}XohgtsGHOTIoB)Lcnr%c69gM;}po*dlO-+(OevgZ>kHkrUKlY@r z@eH+d%i-$8#C@H9t}H=B$XS7?ZD&Yl(PGOoani%_+fv6AL{iB9$ke{+-5{ny6S~$X z9hU2+8@oXL58!z@m*4l%kP5CY)5dwwhQ#_;v#bZh)6gejRt-$=S?Y1V<2V2ApU7QH zLiuC!kE2y<8}2~C*uAQ@wLL$N``?xwU|4ZW);lAo$iaa!fEo>@Zqa`hA-?ZM#nR+> zX9O6?G4~iMJp_UKCG$W2!e;RjpaL)N`831^z92wRYu zV)pMHz(S)X3bvvyWNU}R`a;GbsTJ=_F}EkzoXvx_=kjC?{fq{wu*_K%8NLrTxZ>}u z1W8foq2z=h$Ozw#Q0%ZXwNV44A^wxOKUM84&8%@3lTxk2s3@OZEiT4RoanTz^sh8E z6=Tgwk~fi+a+{r5V7eTAwzqHK-QV$ZEWs+x<@0+7;rpZ8;j zb3Ua_jf1@eUPowQ5Jq5IFJH}-EZW^1oFBop-BHDmMEtqV;Vq(}*kS4=>In7*oW|37 zl+b_tJB=Fm%esE+$k}_THR`!cnb^hM8HDg>!aH`Y3sZeJlJqeRVkBW}uawpcpTs_! zlTf2scwsQ`bS-_eZM_{NWt@#PH@h-b)07E_*{*ICU4dVRzu(MasGHiDw@X26px;QK^S}M(qD9zKuKmrwz+9Dt%l3mHpNs{xfs>!1>SND38-LGc5eu z5}D%Hr)!RJ=`-D;_wiQ=JXa^*^Q(mC{cq8?|1|&KwZQq1+gG%$@|v$NlhPWiv1Z1- zURi%Rf4ujpNHd-fDkw8hq-=oT;98QNa#!UN%7~n$~0kT`$s?1F|o{SVj9X6OytxW4^}*`?kA;dp6H zh*?Z60inZI(B^g#hW?3SBo|Yauu(W2FX=(%Z34W)m2F;G=*hVRVxY+Uz}1G+bg)rX zEr@WB5E|6PU+L;E=hBYz7h_=;z0LC5^z(SLa{Da1HXNC#2pBPP5Hq7Qhh4qpvp>$c zq7~sQ&{$d4veTE$Uk{Z(7R=GFebH|m1DPbz{k0QOO-Ds<%;Dm!wAw)7B*|t2vL@Nb z8ezdA%6}08+FG3wx8Pm^tSRw( zy`aVt&Pvp(33&DvW)ZZ>jL^g&NjgfFn=Z?l=J+*m$IouJc)T&6nt?q?8674Oyp?cS zOUd0@!O%56p)DBg)wxJhT%gQbp@(2@&cCgKDA$(*_%VsOu{5%~yZ!z99e-_4uiMk< zEwwu(vtaz{iDta}y;7Y63dRUHO16^o-*tP#qA1;+%6wcz;;=OY^s=&XbK!g}p<~wF z@OhUWh(-39{G+BShyGc!1*nlC!!SFkJ*HCq>(uv@Dl00&7!>%($A^U%&ouECBHKd- zoZT2;_c2ReDx+`08O>dd{PEUD@o2a6F}qC;QHQ6S&zoOqcZPat^hYXujv`2j@rw?#pbuEBs@j0ok(A5cZr}>MiXa;lq242-v;G<5i9ZOm5`Hp%+>-sQ7s>Z z@A-;|Ysgw6nx)7jNW}|Xa8HR$<}|z88MYB2iCx$a*hEJBre*9e84$hZRCN9Xq6T*w z*kaO5D{d3=n|23ikE30Tc07+3_N1lyahq7UhtrHXooF#vQK4r{!a-uCR_YObwb`1N zL&I7V?xF1UKh8ATa$bxxF!uU}RvgJt>1Y)5fEn&WKFxU$yRB!B zLh;BTg%0-cY>_J%vDMh2UC*LT`XL&Ex+t|4*im4=*r!_bpBqkP>A_%2%Ps}&B<;pl zjCiVtm6Ixh3A5wn=zADA}!Au86ZXzjSQ+Ju^?}tL=2Ko+jK7GX*7WVOHtAA7z+fW0u ziYs$xs+nB`)!5Z+jR=da|l+|v^0C;nd z%Jtl6fCL+(G|YPpMfO^-Bocz?)%_7f(q!aPWR2G#X+pG77AwGaCIbv{qq39n|H@B6 z@Uxl7jmTckK*XNLSjxy8UvH-;v{%142V&mtrzs~SOVm>*8apdX7+J}80AH$X0AR0l z$c&p13{A}P5Nfz5oRo|HxL`W}P%D%HO4j>iw6i}M+J;ts3A>j^96D)?jpI3Lp9t!^q`X9C-H@k;z=qNl z5Mn-VjV8aZ*>w$^ON6)GsuUN}S~5aUo7-y#CCrV%C(dS`MSrgJX93h3G-Mv#gdP*A zQKzaH=6JQLOS(zR1W|S~4ym7)nLehc31SCEL=T!$`;$>MIe*|_m>!$_V+7hK+nd+j zp}tH6!ljy4z`HD5+b(T@Vug*nb~T}$q2yjK$^X0-S3tWzEb@u^B-fXD(Q*D2rvy*)#o7 zLRF4V;}YmGP=b4!AG(`R=(hk`W5~rK=%70TGf8d?+8ttFwd(+VY-cC$=T&($qy3gPJr?WZJF)`Nb|mp4>((0;2| zyCAU923g5R6|vBxR~?j9Lljayi7l%5w}5n9Zo%;Csd0GfM*um=e}L}yo1Ab-22;qR zW+VDd(iILCYMY&VsS+Pg5<8|3K#5UnEG+08M6Z$P*CT~P&nYbYNV6#pqxNU-GY>M8 zy<5acbN^5@kkVOdOK|l<*$0})-dgBj$p)HQL1-xnK9qv3%gvbgW>CtuFuG!te#Sj= zo5OA(Qh4+sE{K&0U8EELZ_Zji?fNQ@Jh_!V!RK%{Q@e}$T}q98CHAkw(FzYxjZ zAX2*?vHuwq#Nh=bP9Rcj@ctV8x5gVp@+SqgBZw3q5a}Jy?`;3$m6F}BweTDw#jo<$ z`B#Jgf3FZQ2g01<$OrYB7MN)`MY4IQ*Jz$P1rUc30AaTy$!`w0&`QiClLyQ&^>5e6 z?B1ZUl?zkP$-5)2~bw1g%OW zRqfFvE{73`stLM(wkxOxXVo_-qi|U6rKpia49&s)>&Q6OR=E_|E%_0|JOQIU|cm0u(^Hn7e0~OqYQ+ z`4hfFyzskcf4dD(imF{x?OWh8>ke$}+Je@l9I}B?Tp2i}0_)~S-qOqDuHy+2^gHp$I(wfDHc@+evO&^JexJHr*F9=7b;-2EI0p+QfFvj@&YLw z-4@;(0@W9vgKg-*ud#@Z?%HH9Pgl5u_bbmP;vJyA%x zLG3!Gv=#l-d(ce-ss;ejLSgJG?f4;%8{7?eH7m79ktj@(W9S^*BNCaYii%D>?O%7n z3&(E02M9ZK_va)BfFt2FN^G#8%3ELeCT+V>?XR6oOD@Qm=w>Dizj(LNG}ZtlY?l~P zPTxIB!Y)k6Yfq}Omh1>;1Z9PKO*>QJr`7sF8t93Mac0fb?ZHxnm$_LEFO)Y$`gDSJ z2Xk(6064(B($efx%Jfaz{yfp)wSQu2szx47U>VM3-4^HbT=QED|MI_zepUQ$iXi~9 zTw{(QSBfv}*0SQg5mVv*yE6p5>Q!EH409GQeaNIFbaHUcIgSlYRcBP2hI-bsn>yF1 zxR?iUKk!#K{>y-)Syne z6Y4bOYR}QJ>U86eZ;xhu!R8?g))A|1y3L0joa5~{)%U>-J%Xb*`DjjIUQm5ZVgy!N z%Oa~^D9S`dDz251bD{mi$felyD=IUG0cH4coJ>w$|F{*|nG8O@00rlB9+Jq9QTROq zPm~gxABJyQm;Am8BK5OuQu((uN1yJ>?pywGYb|kuf$DbWyEJo2Njt_k z5l4w3lij-0icSQRxiz2qlm1~YA7$yhwUh7bb%$p>R3}A8tJ-{HpG^&^f?onagu-%ml zAm$+dV8uKV#&^ufqtNSHfQ{8O!lZT;r!-_s8e-m3;K&F2u{U)x_Y-%cZPz>E9^o@r zh1T>|ffw++HFoZjPpaGXgS4_&sMjRP?M?O#Q4mph6PT4tq7Qdi$9sF5$xz!@HtDyy-qNwy;ifUGvIY&r>Yl~)-bzf z1t{pI!79=C5<3O96tR2e!~IMIMO6DDMM;6IqdTdnQ>YygQpFZd0DqNtiFb+BmNBD*F^lliq746F)`WPB2{ss|UNszRzYa z9vtOofCt&R3aC!Az2SuJ`!9~?#N zn)7!74%Nr59lz4)%-;a`R#SaPJYli`HxH378Lzo)cvmW(x_z-JQME~{6;u6Z!0isH ze=WuNqshKWRBnruVE!*$J4A4r76;lm84+|PhWAtUxgZX?#DR`d;)J6?&W)v9ZNT}c zg}Ym|YJ5a#_#y^3P9Joq4pu(4+{9BRYh*X@F^oo%7U3Og2RrzpLh2W^@p&X;YWWSm znM1KQDFWGZklLsej;g zr4CNG)@$t_=3TruA&8B5rUUw(30jz2Si= zn1Ih)dGVILz}djLB%)v?#Q#K=ObsBp_Bh;!c`TXF3q59{ViRHSOa{vsQg?cx(^FC2 zk&~5|VogY~FS<7nc7QM-MKG|Yt1bt4x5R_U%1U(-MrAH&3AJQQ&0`LV;X>3?6rW;Z zk84XLHKFraRRgW;x_yrHgdt`kb~XO%#C!pMPZuHupE*rmE`Fwx9pddMSCfUTfO*kw z7Vvd~HePPJk_YM?O0&~-akB2ph@{i~Lia17Xn5raemecf(0w`sQ z)?+1hb8-HJ`4jU@IbHsP!aj+)uN|Xv6lVt~=D+bC_U*Fe2u&fBl!JCVFO5HZi?!wq zHUjMN^>X^fU%RW*+Y=!bq_BucnLq?P%4wl2HC!@4vB3D>@Xb(LibOK#ej!#O!r6jB z%2Q2BCJ9WCzjd#ia#26|&@VSx|By~n$lC(;ssLey?L}5-bEv4;t{crwZ>iH}#0EDM zn344(K%gA5cxOuZ#7-u<$PIR_;J(Z?tl;?MHLXs!uczbl>EZb!DA*ABukAbg6iNqf zh8*=uRVJp5E-E%W0o!zXz_cg#jjw6+_&~1%giVl$5ho@xJ%X1dkqEq3%zDS2M~2Aw zD9T&_HK`Dz#@Dqr4Pqj4${(*Dk?_u`vOFY2%Aq{RzkD?&^&YQm46qzj-sOhjS@PDR zR?!vQKwFh|HVU;1C{t46{i;h2ee0 zOY;-98YG|=_Q7J(Y(_y^OE7GFG)%Y|*7C>AaCx@dr6kqdIZ2>@WPIAx`=V<8xtrK=GL|fYWJC))jlX|dLHs)^eDA)2x0!X| za+(7nkXd*kB)tQn{LcFa|gon&mwqtl?gn(6pRP_a_QQqnJNt|n9)>>)_0|KUlz zg>_8x?KT1$C2TBZ^HgkbNaX!JDQ=`9+X z0c9kIks?qX_l8*k=j1b%I%7CAg24EnOc2qPAGychAgL_iuhy38bfbjL7kK=a0-$Li zzth&+&@)CH7jLRc)~XTc2S53~k1zSAroR8d(AF<{Kc8P0ZchKk?tUTbm!yw_S2MG+ zvOVAX)26JdwVz`%ejn=02QOb-h;dZ>Hi3`qwBIy%^N^yx z8N7g%GVT9|y?c7{obSU2-{!PEZQGi*ZQHhOW7@WD_q4uk+qP|M`}ytef3Q`1a_1Xq&F=ywKNQkm0q3C7<%?k{KYs#ob@s~j z7;b3Lx!o3QHJS$Dc*Twd9$pdL@bnu<<5_nlTq%2l93F7EPgp6NC1Z8M1_pFSe%iDk zohy7XI*l1LneZI8;L$k)R@p)<=HYLiXo(eStKBi${AJB47y|6qMUh;b)s*cqU?4m{ zCh%xbNlqQ=8x}j=-Bt-$F!1WEk}8(hHGw25k|uysamEF?+5TqpM(NJ40}0El@1X>c zdcnDt5!4Q5Q*(@B|I%yRNx!|mnDwo?sWuS8ZaNWm*nN5!qKtm9NFHB8;GFWYfbowN z7Eb zYKzvRplzZg%Duh$xt|G{q=})*gJ31D^XB<2NWD**7DB#wNZ&{egz~VtbT~C()&Yga zC*0o#3B61M$~td_91oB)f?|@VH&{-_hHh>Y3OQpn*>_>HAaveu1k}2U77?RN#*=EM z_^__SFqKS*Rm7A+p2aDEJ>4Zd1#d1t^d<>40I*+`i9+z(0oq4Oyjm62K}nN_JxAM; zawdxNkJEwMVw|q>YtkF$yq@EOpRwn^XNUZJ^souIN_2B9%LWN)^4QAFlm^w>1L?mIkW$N z1Xd9(s#O>`W^hH2eP_yDig7~~%#NP^^^M>~{~K*e$8lo1N2BLjfJc~K@YSL6BKZ<_ zE>08QS5kcZ1Me$W5Vw4-H&d6MZw7fSbBX!%2T7z(@KG?}Rf6Tc>yi9nO0Hn*X<6

MlxF}svXpKjUKhYxWj8Rh{5wbamEU~cO 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

@ zA)?(wtROhoW9=U%>(7E>FA#eDsYQXj6KHU9o_fY543@EETa-(O9v3}!oHl_VgcQr4 zM;a5?S!GE*X?+NBN?>u}YIj8uI9(h!ltU{X^O?<7=;yY$Vtj}{@45JK#2N!(NL1n@ zr?`%2odztHQNw)KPq6W0eb7j#UIH!xFkDWyZNgs-4Xe}88e~(t`}&D{=M*K)pi9=A zj6Moras`N^buSOAcNd2{07@#ixm2PvdR$<7b&3Mh>@tcqHi6JblUjC3Lt^9{Um8#j z&&$oYD|fX`f8m7-9jH;3>VVUg9#1NaMd`y8oxCn&jz&Inx=Jz%VvOP+2JN#6eszsN z%`dmfAqn>Y-b8>cy1004Nr~*RRWwl0k7=(wcgOM+f$&)|0Mf?P-Gc$B~ zilP?n)cpgPln8Hjv0|rjDBr9eV(y|R+y@@kkAVjol_6mPCTGx#KxLdA!zCalVq7YWO^p_ZyU zcR{ciFwc0`XG2fdLrLGN;o)mgaD^luUlEC+`aOUIVbv7#!efxKSmk{kFJs|HB6F?l z2l8zyG;=lkEC?1nx_5%^iM0B1rEZ&aW&uKXg zh9W!Kp0J(vdKmY_eRZhsYVfGzuK}R)AP0T>psNj0qjj84wrShl4xR#ZSiQw0@fsru z0=0hHdxEcYT+-~=(M6`MKVT!7tcyAOVBDRYT<+fXY?F(8Rfk{7ljg;1Nf&X(Q2;*S zK}6yHQj{Zpj`#!9XliUtS*9&nyv-W>*HB85xGlPp7St*77e18@FsquWQ8F1hCH$DR zr3*wBqY{=Cz?{Q*?O;5-Ef@s7FbXm8Y=qkep4Atw8KVpi;~(v{$HFPSsUk&Ao51%s5MZe~Z;HBH?q? zD&d^ySO?6$-Yu~s3)qzj4LzOtawSz>xgENxyhJ5_y9PCPw-U#UW~@1nIAv zi%*gnl3`+02BU+D6#_FX)9tTTZ35D70LmIJEBNi=A8Ou%#gNvUP(@$a-9dM*Q~6E^ zr99&MHu;;bbJ=E=j&Bdm@06MUR!c=RYky80?YCSef^mf}$Fm%+$!wA=ZT{A+X-p;G z1inOn0&VP?nZJmQPlMB#WyQ31;we5H2?`SZo{6hG9H+(63vA5wO8`kXHi*tj6d|E0xAN%*hlfm#)tvpHTHth1D?aE_I#3Ck z9w>+>FptpQeCVT-bTP6GQbEtKzLVKpKC#yt->+3)Qu$XN6UbS1Y%s17yzisoNX)lf za&%k5&-%HDsbbyr+6=Jj7+?aK1Bwpk>rv2(bdqm+{6PDW#`_jET1Fxo#hawv>@`q0B>oD5 zA$!SJ)Gbc)F5a?qF}E6Gq{LV?Ve%bVp9xQ=3>g z7yDK&f2ny>h0QfLm~DN2(vqp@{^lc~?@-jsy9)q~31zbiUP*eRp%Ps}&|33a)CYL+ z)40N1GPEkbZQ>R)@!~eDr{qqkD`BvM+6cGCQYGBE1NBGEV%&N4Knw)1tu#*`Ui#Zo zDaWh|DC!Hx8j;-Fr7`oy(xl$4D{vklQy1QaCoa9hY~SuLavEJ{z?a%;STv%27xapI zTc#mNA}vW9i_+03jSPyMNSY>(%ov637fdf&R?j9g0+?Q90;0#Bwv71lmv9f=Up*RP zZXc*DQoK_Su#G-aB(sR3PJdTz;l^H{hi#bKl8w})d-jv^#C@PPzWjro9v6q_mA}DI z<|zdsTu>4Zj=Fo~kzkDyzWXB=@bB<+iF~UapujO-qdgCj%f}hBIReKURZ_9F&a#{RN8uXsRnaStiN&=_gC$0r z$100d)_zR*2`?o*pIv+uM71qN#r&pAyBV57E%j7>-Q25;h*S#;xyY(dmZ)hmaL~yW zI=ZG-`@Jwe&{6Pd^zsx}F54z>`46{`zCiL5*?>yBBGbMA0oVh}udO7_T#RNg=ohQ8 zl|^1qg;oFLOIb4-lS%3__ko2o&&JvA6BC%8d!jdlLj3Dy2;6S3p`iVoRFo5A2QoWV zSCBP^=C7eQF<~kFuUxt6ZL!nia~HPM&G73ysT*D70XJceMk#X)J?83HS+hu*R#$_D z$&V}5N`%niuNhn$#`caR!U`~6Y=_IQVf&Jeg-O7@k+2SoK-BqVGHLtWVDdt7-qAs0 z?U&WG2OaR>8ZZV~wLN$@a)_AoSL^MBxs0rpgJ{k&>I}}x$^!k5IZh)4d^2C$W>mc@ z6hD5S9vFhAejihL6k*8c+NB0=ErYf=Q-BjO5{Z6RXGL>)7y3(+v>cu1!{`Q;#&%D6 zQimS$gC{4rw8@kKgtnXYZp>FktG*5#8!asLX2&>Gg768g+L*W4k{`O#?^X^FT28V71Yo%lBYcy~cl;_#Vj#gI<2W~}crnw%hjF)&~{PWyO=i1yA?vzd2 z1Q@0>FpxJa1_Q1mZy9zHW>j1&~U2wg=W?2R`-^A>|3m_uEL77JQ28>L4oPM3yOp>A-|GVtZQCzk9fA zU6{4&YfKgLbtGwsI=4s(q{@zXKYcfQL;h8jJ~h)oFL~B9 zmDM54wM_;(rMKd_G%NNo6YnfkCvMsj6b=nZ{=IKP7?MI1@CA%F?}p=jj-Y9K!kYnW zp>jOP6AnBZ39wx>*5^O;KnNYQmF8(SDs~b5e4K{*ezWj=U(C<%=F0ti;s1F3f1PlC zP*}TCMn;2kCLAK9exT~ki8$?{n;)RT;z(&%Nt$cwpCCRX!2m`A1%C9sDCzMNhSM68)ZQQnVE^uF z$9n>lH}AF5l>lW1)7#T}amd)rOWsd%0C$(in|a#l-}F0*hI;v*MuhM~q%$?{)DYt+ zO@2kHl_8on)6tVkIRIJ=B--MKg8}aGHMWY5Lh6dbN{qX$W6&b9BYkf%=oCey=$mQ& zNe5M)nIPJ`7uSje{Kw&FwyXn!g~X&Mdt2Q50e88UeF4N6M$Wfhy%1*aZPXfHK?Ou9n(0Fh9}M%{++csK4?&Ja8a6>143?xg(Q-qP;f4Aa0bvp->4kN+JdJ13 zGAI`Rw59d*)wQ@YP)??WETJCXy)#;orMiYt`63*44`8o+d!`Rl3&v`h=TD>rnbHgo zrHLB!{g!qFk4Nd)>UxbRQZtqp*81%F8H4Y63AMQ zRobco_hrN#tPV0VH&WNl9B@|>=V3Kk0*8uf5l9h0s`{ft={9Nado=uK1n@i? z&OaUbIFb~bHX=@r!o6A6t5oHMH%rMPxw{o1PQ8Y_!| z|M%y$XP?eiyEB7XMuf9Cov?HAMmAIsK)D>(-3f{^3}! z#MdT?<8>08*j{pxpnxsRyAX5k>Y~xRE$Pg;KOvoV@Bxt4a3F{dJg=FKR9Nc{B^D~G z-T3EdfXvEUZ4wl@A{`@2*~Pq0(BcxSa(o~I$3Js!*<@J}Xctfy<0$U8OlnI)s0nxbp4esDr@+~d9*lBtt+GDnVQ#65J_m({DK-MX|PmlKB4(0NR;ppHdB3i6>N* zsW)(ja+Olfjj`_lVK^AIZRbH38aTpkGOB8lzbOv!>pmG}zfr`wq z$ds293O3M}(WjdT>FD=k5i;11XY3%wfrfe|j0E)a4q^d@CFI1rGTld@64wi;ga}$d z$R78GOeGYPRP$rkrk~B3=r>8N{B%HRF9<7aeQ4_a2g9bCUx`!Q|H4$ z>p&7;yCTJZ7RS!%Hr8BLNT-;EF>2a~bYAzX3$*^F^fc*3S`GX%%ZievMBm|Le5ST> z&;mN+%(p~#M5kNck2o)Y8a+^6o9hIYyoKPpPp6q$j74r-Tp3q4E|yZ${0U|D9T(9V zT?rBMgRU{%htU$t&hZ8dYYJ}y*$8|;J5!c7{b2EtP!v)pc%rb;9wWTw743d)WN1C6 zhBzF^zNc)$fTJzgW82Hgu<=2rt2QN@F@@|~!(<=WGu$A1oKmUHAv%&YMkK4IV^(}| zFq`(I@|K`>+-15xMl-1j8l~T#4<4B-5JVS1N&Ge^gNZwAN47Cm4(>Hn$ql2W-Z})B zPOrny9nHy1VDJP^FprVmFB#IY*W34?-J7K zMO-17vju3msaDvKWNO{gWuZ0CS>K7td>-d<*&Tt2^{{YX8In_ZrgAj-EK{nx|LEf?hm{GvP@EBg&`6U(iuiN1Y5B{_-gy zmJa7>tyWMn93PAQ`g+n<@**h$JVc(OesGPX9osnLWloK~R8n}6ETH5~M@EOML9~fS zD+8QSg#vhP7gmrMOmR(Qi1=Cx=%!t9&7vCTEO<+% zGFaXWyvV zr^(ZL2=ZZ}HLwppvg=+`jU)%gDlKh5)n2Whs+#KX^9^2;g?Qa)pgj|HgjNs~Dl)Ts zG9`4pD(Zi;sm*|!ERx48D53>FQJ;(^K2H%%vz4g3kD>&5wl%>uI@iGPEtv~_4*#WW zcvr~jB%+F9q@gq%NscDvL~6y(0iM6qu+z7rI}#4!_lazW}Hhl zCoUtmVR#Hx0`!F><0{F#%lYSsGF~haWruoJjVa+SLGS3SX0`)YKp0WOR2TuB_0O6YmfSP zxclJ2SEG}2IS9%#j@i}DO{@17)T9W!_B29qNO!DGhem%O2flt=5cexMHgX4QJ7VCC z@_rniz?$K!qq=q{$Z&p`M-nuA0IDzAx016)3Um}(_9E)o+y&voT*gTxIcRWUw}?E5 zMC%Nj(GdO5j6w9yalg^tg9PP6k-J%-XJs7Q=s9{>sISxWd7h%z54<5!r)gaRy9Y9b zD5Kz$iA_Z@s=}PIynaXhA*;(1*OnzV?1ezf2EOw~Co$|ge((N`SCjP2(iXkl6}PN zck<@9UCf}3m?Ei%t`zC+M68`35jM!uA3xfLZ+o~NOPJ75?ZfzkveAEo9-qgKA~T@z z#X8%#F@CrtaId2oB%iH(fi;FH90&;?!Y(FK5KEikMGH<*1kh z_b4D_=b+Q{MiFXjbZ$37Amh5*0BoK+YHcM@Cb|dS9`sau<7yL&gT5!L;TA6x%fW`- zHXVa5heVf9Emm&^?Ev?coEl#@kZ>j1dsh)_r)!(kLmTmc??5smh=3TRYipqXY-@}? zL}#q%M{yyaBlxEkD1+9`A$cXpC9(O}WAKEOxRja-WD*NN>$Ls?mwEYDP1RLcIAj+P zbtWXDs%ZWn6A{Xbh(~6f7b8vRneH1^&(m-?mtW0cJl;sR5jfgIC*s7IGz`x0mU*+f zj6#F$S1dpX<7}U2o%Z)5k|6$Jt5dOEy{=*CD4Y31ux{5Sc{iOlpdsOfB>6C>|Ep|X zl;Bu=n1GPo6dtkc7iCa9)^1PIl0t?DQ=OL|oe#-)7 zw8TT_@^O+#5z4xw%_@3Rf-IZ#Rvh(2dCsZ$^ELy>yHF1P1d~Gu7^J4LQtm93+&{xI|sx zrfZS`MMj-m9eDUCWiwD`H@zmt4Ph_1!fp$#1#x;9zFF5lCg5tT8k$-<+jaPq260I& zWkshGuOhXR`SuyP!cisFq5{>oIiR&(X7?(OSg&=~zgvQ3x2WL~S5&2MNT8zybzf4V zq#Xxd+dXXd^CV@5%USfAGW1uNvDP?+YJm5=q1TQAu35<2OUU#Usq!FPnHo&*Hb7D0RH+ z07c-{)w7()MiWpr^+%aihJoMiG1BP6V~qw}Zl1}YdGe7}t=0baT&uP@c4f8HZ0MV9 z!Qt!~8IA+$qcfS6U=KLICl#`ip8U6og%7me(|KXPsB70(zMYm>ttZlK^f@H$Hof6hjv82{TL3Xfhl)D zPy4sLe=CAq_9wz9I9e|(RPp3(U>H-5rXxj+(KUKNv?WxAL9tB2-MIiX%3r9C~hJIB)W zN{Y^Qe#+Y?gkUrqYSI@{-RpgFYe}QNmdjw3P9SnsrDX3t9I-iiu8fJOq816}*$+{9p;e!QqIf2~CAqFUF1M?eOi&+vQeT{2Hel&)Sq7T=?` zkZ>Zyq1gIgG>D$o*ip#AkWj*9t*OwW}ld|c|r_5%pDp{7?UmBilI0C+mF%BZZ2_a zwXi)m-$yNfw340#wzJfMT0*<$YVqHZmYS1%-0_*~)w`KI2`6?UwmyJ7mh6jb+^}yE=@LV5}lgtc|w0 z)t((PAW{Nk&h`eUqf;Wp7>^$|8b;^#DI8{_%(mzk(ek`Xxt(cgPBF1K|1?D%whIzoD+_vm|C z3ku1RtlBuzrTdDUUR`OKPlgfSsq1%7=Kf0Zqd$_?cJB3U{3C}_TTXgtwaxttq4~{n zSq~bDL?OQA7JEagcf+5b-Q1l5#S@iPqCDW@gh$-2i<-2}!dh{nZ4@@1RdhMBUrX>O zYr1nB_c|ExrR3WpE*TSM;yuUvWGo2w`8N4YELPtcG5kwS*FC_(7d}JEgv=bPKUhp_ zDJ4I$@}V-aMbCKj^(+YBJTGAD1pUmYq%PxYtYRH0)ht<)w;0Jns2G|;%hrPfqXaSO zNtB?1oinTqHtOMKh7Pgj@tSfo_#h`ipmBscF`d;d__^D&YF5B4Z25}atLJDmLVc%x zqdyik#N3Q+Ef)1zuRB!!)6)T~ZT^RPjwG=Yo}e{uo1d` zy@Ydqs^-P^o9xDd0z#+jIru?HMH~JYosAZ*u#~=b=XbG~Y&@y6CF>y7k5`tOaEbAh z?rrvdq4uz%SvDVK+j55K{yeTYD&M>xd(x6;<8gjb$zJPn1;-oPIZGb4qAd4N$|DU* z<1MnLtJ8m^ZZCYCn6??>78}G>uqBD#ULgIZd-b&c)J3M{ z2WuJ$)<&{)rxib&UY6M+YdxKbru{c-c`Bm@eN*;B%I#m5&C(|Q-z9$OPlqeXg@&So z@GOo}#m!=;Sgv<1$;#bQiJu;|<|%NJhO^M^96j!4q>@SDM6_{vpp<-TX-~VD-(%Zv zh7S4HZ5WD0g!9sdyO?ZR?lP5+JL-7eB(8 zVQr<+cRPz%PsSKi(6cZ6;m@d`0J28Z~mD=oZTc!CH3APp&m5e;O zzYg$!{%WG0kQ7$R5R7p@9UY7+J?@&(3le@o?86i}DAi9)LBI`x)5OmIw0k@?oCTZz zV1Za&oLJzLw>n1Tc_duC5U_>FkUIUwm?5=S2?CARJe*}%Y-GZ>sFO<2M=bc_Bu3V} zYUUAsX6i(PX(11TCSh+PaKJ>$@~XDgU6G$=Tmxc)-R}ntOQP@k<1a%mOM6UygXK^^OS=^?#7BPxEkzAcA{Z2L zIMukY)gg&yxYB<)Y1agDv!oY=Mtt zOll87F;Ej5i7wt$q;dJZg3O8=Kr0*y`DB1!3bw;4grt&e+EFs?Gz>*VT42XZO=A;A z?H3Zcq|~vLskR!x60K?@BVAcy;Dcmr!RQDAnGnM2LLy7nkFjK3;2f;CrDz~ z1J)<(%~WHrxKTknn2{9}yrmh33&JdMiVISY7Dp_2OOPkvzm6OM4)_Fe8u=zV`nV4= z2cvgmuPtme5JJKOQ9|x4MsgvbFQoVyQp5vc!%ro5Wfle&cBVDCQI2jt_0+?$fz_3Y zt;tN88Pl{GPXTAGi}jB~gq~&)JB(X>vM&KWxnfb-^*GD4Z$P^dQ^~r|->U6w&qOOF zZ6@fdau9Q9PF7mzodMK)BGbt3r`TXSb)oYe9{N#Ad)pHZoW^I8!*>`eh=g&?%1YLnPeOHYmdpeb53v? zHlT{7=v>6y@cRVo_N_e~V+Zg;o)Rr=>jQS3B#opR`~40nc)O>G?M?rVvhySnl?39$ zl7+o^n_wv{+)?qjdGY3KW}~t*O=q?hubZ1wbrX8)H3A}ZU{rkK(CbyS=2+@`Sv}gv0oa;oYW1ooK5B^gJ~E?WiK%+w0{RP9ZWFCcw4br z42fIuf&3#hjCQJl1S7PJJ!t0m%;TdRYec9mLwPg;J@k)t zRZN4hxISnx%+oAy^N{tSnS-2;7KJeA)kI<7;EQMdaf{^_lj_aYiVx$t2nLw5uniaP zk^YHGf*wY|x3rr4WR_a9x7bE2?8g3F^{VKs57XVC$D-0T)QvEw*%zWZY!efcGRkrS zYD;M93x`Q#{yrf>!1@`<%k`jaI==zc7YA5*-v|67D^nwaTtM#Jl|cm3s249Z>8l^9 z8xkw{SHRVkvslm?w1KcG_$SWIcJ5ngMvt{Y+XY%Q0gTT&MrQk*rLD^M`Xh3yeO6x< zbIbf>@DAhyJ3gMFA~raO$*71?+u3RrRY^xGfw2n-oNC17J=vqpJuDbSE46r`LcbyF z;mJe+JOV$CudRHaOdRj;x3{H>R7SXZSkF|hk8M4 zQu>;snd}v<%AjnFhj4~b{s;qJuCeMAxM?Ezwi?q$E?AQO)F7H$qF}YNColZQC`Q9K zO4`6EW)m%k_2&>Rk5;hwZ$E`;grb>I(i&dDLe%^sOhrmNt2%!Tq~eQuxO|;$)=XoB zx}@d}Rsw>5y^hpMz>mo*y9wiR~YPtIoPMw6(yu z&DVT6$ZploMy3q41w>1m?m%7mzl4o@0KC7%!=d$=*t02g(v{V zw4`X3By9s!n1L;+r$)&iMc?8?!o&@f^&v=_Te72@;O9C)PK!wN4r)Gca;2I-)0ft( z++a|GR51~cZGh9+$KO?&xv!VdO^3;Gi=~5Jk`aZYwMGcw}`JCk;fBM)L>ureb1{-Sj%LY(<0V0y=4#*`h z$AP5&1==g{LY?BH=2oj{a*%#lb;d0CZs4~{c0JE{c48VS?KhtkqiC2Ax}nlY&S^q( zU$GdUD2y=?`G@jaYo;{T#Ukwq$DZ~_AUH4oKJfR{Egz9K;?hIt#sbAyODoG=bE2}p zzdMg3S}MT>CJHyQc8ImO43nhZHxSR#H*3m2OeU>T(t|@UbveJ8Pfdo%8HlOsdmbOm zJ(>pY##syyW{7mg7itzg6n68M0q7qNdWXtE2567jE!5eA2VuL6tJEWpAJ#^sk_?z% zpl0krM&ZYGh5tGIO%J%C)lhB4BMC1Ej@mZn1$AJ@vH;3!Ya@S~@(EG51I zw#*4ckrrt$Iz!fVT{|mGTlOBUK&PHpFTq%QZF9z?Rk7{o3fN&xS~rC%PLiHRj?NzV z5DAMExu}gz7DnKPDXr#fmRXMB--@@FU_7J*O+Q%CvBNaGa@g(lkn6qt$V`mT7wh;+ z&<&`%F#KX}U2L3v+bn#5$s1~kXDikpPUAOZ5pq-#WGomTDNTFW4I%t}hoqb6njN|S z^bdn~o9pi0>E(Rm7(3(1RdW%NvyF?ibJR~ekqdcjXCs&^+A!wgx4RA6^hY8GR2>f- zon$9WU>)qt0(feFzFcytIOJ^O9P@H*^r&Blx2WLlhiKFvpS-OOYUkOEcBfl+HrcLv z!&e0=BU5t$mTU%11VWcpVx96M+vlkq5{P}Ig7P@x%Sz;6k-!9)G`nKAak;|1AG3$R z&LY9{7+N4mJ{v>`?0X90KTqKUgvlNO7ade?^l+87RfrQY>BfdDNvfxKH&v%FjQG%`pBZEa9r}&qJP0z z)aThyfO|hZBA|>kgPDz}D{YRRd!jzg1foaq|M@dszVs7WQz?X7*hWEi~gA>PXlCFkl3TBWv|4A$HDG+vYD(UQ_v5}^dOENkB3eS<%IeYEAf zoMkxfksmvmxss~%oR1w#o@FBkr7NCR&PB%{S^*yM6%dF!E(}OE8rreRqX(duso56e`BlJNQ_ejoOo2L(=(7gt-Aol{256 zR-T=+6rYsbU8{WwXwYizzB<0X0!*a<=2+!s zHOc|_4?!2^lMV1Vhob@WWx^0IrIVWkl7JSFfP>3joN-!T_TDAO9%v{=`tYxdJGY}uvv6WkBG*q+6{SMm4VAF@ol-O)&L zt!CD2Mz}EWFmtbz1w!C5TkoG4I(m6B2xGVdL0JVc9_-F-fihK1Cnj9gh$>0ck%am1 zmwB$c=YI(5s?<|t?_h!0vj-LZxNF8lO2#)82G#m+fk|wOJ-=~0ST=3IpuZ0_W>gPf%F2QM_hH$u625zHdFf zTXDWc<)NYmKwnJXr6LAF#*=HxkqnfH4vdg%Bbq3H%*ojYrAx3xtV3z*Q_$?bMVJ|f z+fvpB`B(k%F#dTIf0$r}PknJoIfF{TKHpBlHB&Vb3W(=8nPFfjyeU)G+B-jRIJ(DI zH|$C-K5pg%Q<~aP>+>z7<=D~f&vi-0woV34>_1D8@PS=tq+uVSY3em^uYdkRXVKE* z#>HdS-*Ma$Te$;zcYQ>sAvV4RHFYzHf(cbi^>w!|Vg#)cLziRcnd@mX;k~{8Hjl>E zVhH=N>3##)tP7oz8SOQ!F6aDna%9>Mg^aUjaUd=xsMvOLMb+EBEBH?UaJtHsxGtYw zdXI+l8zE@j7P(_^m_yIpVQV|4+8KvTd9vs>9X(4N&SL|F9&$#ZA3X(Fmr*+{o>6A%Rj^Rd#3$gr3S5Ie8k1#2kn+OWxNKoww zCe=NPnag{VIE6qBYwAghW3l(7wxA`(sJqP?xU@2Yh69;Uu)_k1$VFH;kp^j*Cbl43 zA1*jkmic1EzBEo=IBB>krG4$fNW~nyG*WT;URB>E*;D|sGv^n7Ne!r}qN6waA}*RI zXdD@9na8qAJ0q^s1p<3&Bpq}BsQ|TCVQ~_~_7hSIwL}#8jPlsr0@G4=-a>ZJ9jN~k z8ITj%Yc>eWVcFiFm+>IS8;oh3RL!~mJ3qKY3)>>ez1)n{j5GlN%F6UNddLZ2t3{Qm z~*j&{=Ek+-vmpF}j!9EbWpgjV;1$&8Ah$y2f{Ly0$2Uz}$=quzO&T%M#&w-#O1 zLR(vK%ios&Y*Ip)>;0actLHG=gd}#7-u1PaICJ^7N?dCxUO5IT^cl*I*JB6%J%V%} zs(BcAa%|YLWVX%b1NmM3`a4~l2FWdAI64eSk45)bYR`$#99;RBZECI!;-4!G7|Qli zdn?yncjJ8d>gceVb8%(=??9$&D);!-Ug6T``GuqDIqJGs269D-XL}ZDn1~vAu!zr5 z@&l#&a3Y1U-nZVtMjWIJ)n_kub+)$Tv{v)H%g4urL=?SXIVb>M>lUzXhRxWK$^kfO zOS82)zq(qrcO9uwFw%%V__brxOBx{JD?gKf`%^?sc6thF6TVg+Bz=C@@AaaH!Zn! zGyz}WH_e|3NY@u9>fzVU9+@t2y^%H<8DT9l1I{5Q*NYE5JldbUgQ-c?__v$2Jta$9 zVG+TyP7ILl_YuNfq7-D9@_bfMid(os{E*8$t_Zf{^v~NdiPzs&$+)y+aFA9WGD|ri z_n0;5!rLm!pv;QiQv1_ou+Mh*1(5mxOct2ZnccxvO`&ivLhW%u>%$oPTKen^XmLnMGW&Ve?ca9OIiP{Ipwr$TH+nzhNZQHhO+qP}pv2EMN z&iC&3%O<=3ZYOmLT~$eU>LlF<&*RvCfp0H0?zH074?T&Ncb?1^nJ85yIV`J0D9cM@ ziHWqvS@?qfrai^h%!OtO_NFk`kXbwjD+s^rWK0J-g}X~LulE7?dq z9h`Jz`-C;+iAqng#~MNCQU{v+&Jm^@xv%pi<8o&-sc%L?LV4I}FM-z&yp)pbSOY=dq%FM3TJKbqhFu3Z7wuj8&-5$(k`uE3`^^YS}L?DrHi{M(B{ zTGhkBR!B3lI4Hnygkc&XDQSZi(%N%8m3n=E;I@g~)L%0ik1s0>n}ulH=cihEn?wFyo-6 zP0o&4rT>Fhh!)HjhYcTUC4z^c2&kk~B#v4E$ol6UL;p0AG7M%kO;ZL2M>|n6a~(cf z*z4fDo_C{ekI^T3P}L1cr9FplX|m7+5=cJ_ zx3!8!%PtstsA6eSPYqc`=UywL%7FNLF`7p;>8x90L$v8HuBpu=GA(MTgzuoE0-9I# zoEx_KU@@OyG4G?2S!_rhskCwOED$&W=viO*EQ;sR%Cah!-ieKY4_c}?+Z``$7-iq8 zba#h>Mb}wJYA3C)6ah^gv-~3csAWc4Zp&AOB)k7}lZ)~@CHC#2Y--fnHeZ57hxrRs zDV#j>sd%2hNfJ+WSdu@lSha}n%Jh75ZHGd$UIp-!vM9|LOADS@qj<&kzaG@TszeYe zUyOp5gtdF}y}WPRrVAn^o+b-qQ%^=N-%U`f%Y zvL}WnhMYe|d^;kpu96n(aaGV%s9`H?MqBnlJi0qz`n+uencfDHRU*j{**;rxlH{-Y zEu!p-((#M|R4K^v{2y1SMhDK~iYmk)z+oI)2@ui(V!R?PS)u|c<^C(65Er8!tc{vk zNS*aMBWuEl^#w2#Jhwa2qU-e?GCjd?O9^uRP~619!qioanoE!*CbTin<6cKdk)Kd? z&5<)!ce>HIX5mki86|bIPAh)t1*Ytp9lFwApEbsYB$Z20kt4JPJ1wpz02?t3V<7$& zmdSy`6*@Zgls4ATswO)`S&T~3G&(}n_{GR*JK^IuhRe6%-=C+;MRZyoRc3^X(^_Q) zAN@G+GK}K4DnE7DRz{tlI?z#Z-9G*GqC|#UYWte1S%M0u%?b&ZgsJ$)cbcU;Z%Ghe za|O01JDjtXAMMYOUmlD?I|lQ^Aw}5Ey}w3^1sT{ILgtlITn}GCp%)$p)}iZAiL-*S^?z&^khD3tf! zpPR&;FK9S_^%fEXgU&VimNX+GzHwn*b$!tjVXD_yGIVhz(D(%w9n|t2b{-y{uk%Q{ zU0+#QS+?(&yR!qj-q)=Ix*pE2&xeK4-0bf=*V0^XpZC#)o&1GR?GDUjCAH7%$L*bU zt%F zi>)P8oy(c%Ai21>-yNK&R_A)cc6;zF=TpTKV4`#U;#@9|fHD}%>B);;U7)d01i5%F z;dCr1!m|L!ApFJ@b~@5E&R_eb#OWK0?&LQx$hkJdElB)n^sg2zAX#UgTu4-H(aX=JnDMjn{e)!bcziWS zA=maI>p8nF0Ee=0$1|aDiQ*%-^N`w?;gWys*Cu$O(}smNQfw6n5L zpEqB7SP5VErBCq4uY}CVU;MtSni`kHf4Fh3Q!uz%N#$O6)38_YXlWCfh!TLekqg_$ ze{=F5bm&aKsML_R+_&dDvZdxzXBqqDOUSgOCM|QK3p^*?jg-R^>3u5Te=w$u*9H?5 z_eoi%A2WLokm10^Z8Zsh}jsY#>l%$w`r%A+0 zdYS@DwRCwRLu2yBRax!ugk6#eGme;|7gB!XoC$G-Rr@`;msm)OF)p>6z+WXCZOuQR zakR;$9E&O+V3NHAS+M7ltl=Q=gZU?AVf)VyEXfz~;>W@9HZaw&*`6~vw7HL_eoPB) zzW5l^(azU98{TRjuX-s&p9maxhQv4N5AgoK?v}`AIrVa4^4r*DgK+wz0OR{75h0Zt8-`Ma#+pxQWnqa zPJc?0_92CBk*Wxuu3^$JjirHdJZb9Yx_pO7()MzU;bQG&LnCf~2F9F^tDP}7kKQN# zsL})tF8o=xtG%+A%n32)NsRJoG3O4I$2rC9HY*5+3zlBOOYHTPT7v`b$G~?Nr~pT3 z07_WEF-SFrJ|y&-G>l6ZP2|&ay9|lE%z4-RZ^>%dugVQE8{Oa%&hDq|eNV;{4QgL$2P$T; z68Xz#E@{savZWo2T+0)YoBH&bOc~4EUeC}V;Es=olq~x@Zj9K)8mM{h*ap&*d5`@l zL>vi=z8!WUOgbp68V%d?PK=#E_q!bG^6p_^m4&W@ti`GEri}#4%*(75kL(TuMp_a z4jY^L2`y5U2#9BpubI6wy3kO*Y?<%R2mF}jzq%_wJrCd6oRNJK`2@&!R1u&`dCO)V_D!G`3fxrj71=Dk?_wahF0N7 zN0uR~%t8U1kQN5PC-F#M0HERpG1fGQr>PblZ!PG@GyvK`7)cN9-CwSad$vL87uZ4= zN4{Oz?5!%)=mY=_#-*1ij4lwk+w?vzvd`Oh{o>si{fl29_dbTtAuWxwR)zaDEzlYI z<{GO|4Foq*#V8YK47ghw8&6lfb&c$41r>k7$LKK@9F=alUUW<9q(DlNXf2)F51NQ?g7)C`WFu3V~nkE8cC?2@b055mR&G?!XsY@?+^GLm)koh_QeQLr-Ho zBO!#K^e6?H{-xrG|5r5c1TRK9UP`0k#{Sh>*sUb``#UGH8h4FZo7s9Pya7F&GFciY zRD`aS3Lvy-ey!W1tkJ`XrXs6)y%VN*{sSyviYG(vZG{9I%+D3NLhptbEZUd3J5-Z5Wg) zY`N;NzB+|CR^Ifh5H_rc0wJZOE^o3ejP1sTxh?nhFxNEk=O;7wicf~z*XQA(_o-ah z24+$oiiL;2IUj@7z0cY2ghkN`BY>cRN(p&Yf^=RZfoPAFQmz?`tEfS&h=pK~Nv-B? zZL!Ca4|&UspjIEq!#BX;ri&_wy=IYd3h(7yice!_2w#V<6_s+TI&ZQUV=g5$SDNqR z;1PwEp4j!vn<^mykFf03ptKBy_K&tkbLQR|X$C6z%y>)k+4!N1E|7%n;R}8BCsO7c z?Ac=SYURZ@%@^2{m&8@=6Je+Drkfw0X1R6?*tNSyX?3XiU8`ndFCk5P1qek!P3gs0? zxXklQ7=t0q8Me^-b*rzTnC?w09!1>h5x#6XCJ&ILZ8g|cO^N`o9 z1;N^)$jRr~R#AA$tP0ZP=8ev&gQKIzPCJN3j{*DZn8>M(+sMpvqwwc3x+#WiCA=)j zG)GUTjAgV@dtVxRpSkQL4MowvmiS=3wnDbdrH+&07DjRqRVq}+DhiTPq1PO7BabY* zi5a#>dYJ2{}GRqfrBF=YLN*YM`K@>rmdOnLB1OHCzi z8;-ByGA>g4M&5(fzf%qDq~FMT-Pt?>*8o5`B%Ix)nHdu%%j@}hLN}*~4QvL-h#)aC z)f%q>r9+c)rQQB_p-R7A8hl(|+F983hr@YDnOKXmXCT7F&X0YjnD4KqoRQ4+J4fQc zpHZT}J1bpXDcv>ssU+HR%R}W~*)wo(Myp$b#VdWsDF%IWt+v}`%4f+lJ`b+Eo`ri| zEVMYpLC?Tjj_e9taOJXjIEEu0qZmxbJlrEu(F}%$ldEW53?^1lnAnCRf`Z;_Vc(vfioLgE5yRH7_h~x&3GAd*gH+AQs6YM;IEn;?g3^M* z!7#_kgkr#BENF9X-I;W_a}~?1&8$UnD%A&!eP4+0iGM*TNKVdbrUJgI7-}+Y0A25o zW|gjBJbOe>TZ1NGK{=^02d`8&gc~xHNPjGluFMZ4H27?rXgTPivZw*waQ*ls z#zBV2NG^o?l^To$KQ*lwXnU+FP(y5lc2gqe zvh&dChEr`gJm==-M?tWVh%yqEnMXZFMKR1f!W7?+V4QJ?de}rW%rmtu#&cW8Fw8ID z<6~M&L_QAXBUzepRZR$My$0k|a~xAzH6P-pyn`)tk~mEgWgj64t6`TxRc0;#{YE%S ztbhI`WMvd3bU8%Y#t2@O58J{jM8MWM7t3KCr5JiYATE?P7yN^0Vanhlxw?^HYS@s` z%y^?2S1grKg>-lxlEQ~1aB>Ffn5zIOpRqhqvtp8=gDBKopuDs|e;!hG(|MIa zS>;t4vJLTjVm$W6H2!%#`d&JwOp0AZtn@Bw)7JmG&k!J%jF_CHmWuyjp|@nw)&nlw!(3vL!gT!(m%G+;(UZa8(~B737|Vp6>r--Y9x`4mppmQWj(YaKpgRK zI^+H+W!<)%c1Ne0taF3*u~w0N@%_1)gNf|raabrp+T&&$t7rJS_86XpLo2Y;sujy) zLP)8nTEe=%+1z-^LLP@p3fH@+_c|*@e@v-sVcXu(m9*7%KH9vHT%H0;|6AN$h1wb% z>rq#W+^!Eba~9!Zch@2;I5aepjPh9eS6IOAzlquDL4jh^lG zCsT?Q3SGMO9(Cxvovh1arir=Z$xV%Qr0Oq` z&D0N_=w=Qc@c;S5|UA74K%jc z%X7ksZ6`tu$CnZU0*6N@#>=&&o$UL|pqw8Hk<${lx+y@4fT#%s?*q=v89e zSoYapX?z?O43CGs3hv6n6-C;~V`{S9&8Gue?s(LIcmY6lfraOsNC#_Aw$2kjudHsb zb#x1?F6T_^0nbuH?1dH2jv+we49gMId5jpuWzIy%^HCW4)J&K(B8Wrx0cl8cmG>jN zl7${m5p$lTcMst$myK1HOO>?Ejk+4Vi5l5!XW;@&=IXPRjXz=5NkmfuIB6($5U#rO zNR)V4oxIL{%Bg%0#A7IMUH!e#E>SuT#Xl$MDbIr&`7`&FVA zP`B@wnI}m!bZR|JP&;UCX65c6y!bm>jXh7!D*1RCz{6N& zdZDoF1%=d#*S~`&-HKrae+jW6P4D{jX&+`TR~*@*-`>&^|CUhQoaUuAU#;yB;N-c* ztuEQxhG_A0sR*KJiR*3F-;!w}eJ%yle%Fc2&$|ZJ>#w#EM;^C#FMgw`XFA>8gEkueKFT04uL@T00fG8}1RBC}cx;r7Biu-8 z>|i-S9-^wF4^TyER+(#`m1TyU!w)4{B`^CRw0vnyT%0FCZ{}taz}1BIWze*TO?0a! z2kf<|e*2i}_}%4^i9puHfZ(=h%y}OHu%yUa2z+~}rmTd(9CVJrr-S6`?0UU>s9c`WtOtCm zcgJb}vQ)oqPU*y&UawyDWUCkk+Q9SVA%9T%5{LtyvL$K#SN8kq*Z}j<*x&PpbBW$Z zUb-tgkCbHnl5X!J86+5BaRFskA`wo#S6yKJKe~lnW*4$$D<~G-he13{0L! zSJjN?4&~A~M>~1+)L3bG$O{`<-~Lf|lfzNS0o1LZG)0)@=P_WVeN-1-xW-JT(uk_u za19fMl3Ux63Wz>*ZqT0>+ACzW2D?xx9#GL0~`TS=#~zj zE?9jG@3GEkHL%!e(99N&n#>ASvQ55^d6GHwqfS3o8soz*+9*L-;RllLvIUVD=tsA$ zU~{>Vg@`iwrGDmVP@Bv~Y8YzShr`)`2Ve<#YhPV$v#)UCAH3fgK2h>_ zl;WVWLE&BLF~ZbRI2nx@cEi3|H=IdYeCWf|`2*ax3)8)3kDD>`b&SE|ix3+UxYIb& z5p)kJ$(}Im4+n5sW=h?Uav)dI-zR%8e%dpGvuR9d11l$*$+OmFQR`;wUc^Q~eikEq zWE8~8AY6X1_^MRA<-e*LZN(G&6r3WVenm>SVr@pqI?redtOqbn8LvYK2T!eg!~$g+ z8I&Zl8A29m*5(J|jrxS;reK3uqd16_hJ3R$fQpl5g}H0@-XUv3CLE> zR}7lKLBOV;QsS-RR1C`;XWQdISfm2N)}xj~{TUF9ry~@)*0BQO{3b=OHXDYGc}8RYTzcIIoG7j*aDHt^uRJ!ME_1C=w+;YfC*o)A zE&_w_#Mjg|vC=9lH*|Oo2-w?OcsF+lO4oNxw(kkxep2_Ge=PxRVqo!|LMuNsQB#uG zMjv7z(`SBw>-!0w$W2>Ysqgg_D`h%8z2*t$EK27V0t7Pw#4)JgWP}XUYx2@*tRvfD`%J#u^NCS?U6Tu4BL;d0ckw9U zIrIq%V#*Cg12MSHB0cl0f|ey4+rc7h5-@H0UozWW3RYoBcq1Ht%SCN z`a^OKrSU|(F^~1W3md@tBj+TwL7-1G{MT5Oc1NX@ z;G9o-qr8{>6|r;~uR`*Tk?AmF-iE3@=mp4`W?Q5?+X9L)dp4y^k0 zR>C)ooUBS0-B3i3yM9pZajlNmyGEn1qHEB~3C`LC;8%RN+A73-)^rr(95JF-ohm~n zdPxzH10!&z%4y;kbmBLHXSYjD+L}r^$IOpBS2RF;n081fW-b=IPQB1)4L&ThMbR!T z?!F3%45D9Y5TjjGPfSal*#PlGNhj)cE^)3LMh$Zr@EMhF{R7)*=MQfhcJR&7{&7QMJbcCU>y*|7S*{N;-aChDypvx zDg}WnB;Yo~qOp>AMk@XJiIpkA_lxn$ovB(!V?vo1LxMw;T5;N5U1%nCDwp9@cX^i> zTK{@Lns#8LRC#BQ?<~VDopw_cfZQ0r{6i*ZsSnnq2_15J1K*sev#-;&DJ*2VUcMXSSAz zhjGBb|K9m=RoaMNpW+bJc3({XtIfeHs*O2PMjhL6|39JuyRe4)e4?;s6R)tQt9SIJ zh#DS#^_fKm`$k`a+fby@$-1U8QBTZJW+84v!&%r+2I$Oku=+GuL-+adnt97@L55)~ z&_SzmRdaUG!x88f@Y0sRA4l*uc?#}}SDJ4PqM}YfyG8FKirHR|gVTu+G+!>%#11h0 z9}R%ioH%STBr}D3PKZ%8Cvf$xKPOx@T(w0VarEsrO}JTgs>BL6u70@iaN0McDeFBI zVp++dj;vYfP5-*UndLOKH#82SpTh^MKspolcA>9*zQSHk`4u3dV3W=n3QwTsv9#Qe zaxNt;luxSYF1VgYg&iwqo$2_bL8u0Xt7mO+J>t(peDZ);Oe5BXej3B_U|pd$Jg^Rv z5~CIdF+e?Kdb|b(@Rzf=prcYB-lKkXh2UI+Spdh>Ba|Uw+J@NfVrH#rSmV+0lRurn zNH7SL4Y8@ceA+%bVAyn--ay>hw*hVL@|RhaH7xr`zDZNCDBRRJ&J%P(j`g+mq-*Pt zcmcGBq}t#B{E@ucX&sS$#%lvj28h0EIL&DIz951fjRZ*;#~Z5Q4U_yfRqD)>V;$%l3nAL-g|)~Ta7>&^{r7i{18OF{(? zJKCN8J_7hKfd(!M6f?_r-CZ)tBoobZ9j+<{D0Vd0=5utB=X8ew+zqlUyM=*GREC<- zZ}E!CSS<^W{vY8SC6By;QApOpAS!*SD~pV+Ld}PFw5%{ZzZk-E5+rip-$AsJpj1*b z*22H2fnw5njvA>J8L&lDKod_2OJG$VJ=r;9e-x>q=oU)s|Mszd*d~ z#pdXRY%ph$8FL&&orqB0f*Onl>bXPFEDR$99Uu`YwIS)GC}_`La(WF4h;e&WnpI61`X;ehc{mDk3_mj{*pYvb&oVp!o|U5eei;FPb=4Muffi6; zeymGi;7cel*Hx9Q>`f(l0A^f$HgeMa0E->#yK0JdRg~<@C{a=MCA(_l1(=4Uk@X3~ zYU2h~Mhq$q5V7?MB8PXsBg+`n>QTvm-beq>3LF*&Hc@G-#i9Qdf4D`Z|J=WpgvtoO!Pl>4+0z5I_!R{a1|4EsfUnC34%^}xwA%&>#X@9N zE<9!&PfMV0&_6lBN}RbhpU#dF_kk--YWIY4Rf0U30&e#0ArdZ4%}J}HuLfXs1w`f& zr|tk-BMzl$-D4b?(67y)+369mXP!Y*U(by5L=M>s&P)axy+c`C8UcD5E#bJuWbYY- zlXT&Fm@wEjOt_c;a~$#?Cr~4pwb~^Tp3`JYd-y#6V{3u;UHNnT z$feJD5le0K&pV3B*9h%i^qXNSvy)1nvg4ldR+;H#QieXnkcbQj73fhw#nYo6w8?7C zs-@5-5l}|q@+TcK$Rhb5Bq67L#4NOB{b}R)c7Xn5kGGIV10FHA4DxLdC4SdXB_}T| z6d_Vc$th^4+%ShNT&uj``QQ}$Ke6&d$X?R@l!VSiE?OH3O{qukEDRM=S-;dQFQ}h| z#={F$SzR6hQ+FH5DV2oD$^jMoEF!IW{P5Y1V}_3WKYYIcyuI7JLqXnq#dFWd&&N=- zqZqJ3`fwqgYOtxvU$%OG+g?3AN`&eT3D6FO{hGUMr+y^HZ8UOB16d*x`%rA zACbs&w{so{mn3l!J6@4fQq}C!D~>gRq8vnFX)1_J&L~E(d z)@gm~RAJ$x(T8{OLR3lNwH+Ero2YfXJ{!lSh!dwCu*`tQK3a%{AENe`2InfHw53oG zr=DF`?WC2(_7Rvp2^vU6W~QnFl+UeoH(+mPM1z%l1J9NrtGQydGsEUk4mEsaZwwj_PEffO z>vw9eKxo<-hND67(?bP}yik%&5Q+w{?HVK3`+HYVbYlVpeJ7v8ir(iT&(l-#YLS|h zuQXHQydr!C0s4s=qYoR$-VjNyx(vhiS%Rz4yq7rx7I8)hQ*z2hCkG8W@E9?(9p{tRMLL^&VY&YVxn1XkB7^G40zP3LW3U93>`=62~ zmzXQ5^Hc@=@!sT0PSd|x$GZbBK%rby;x&o-N^N4VFd!THi0HzSLI9W(6dv=$t{zOa zr03kdZOD-6Ws?O_Q`qi@=-b6(P;=Z|pN7JW6QgQX(vFa=Y)6Yk8xv)#-`oQ(N+~jT z!?h9$PE!~PX%j(&94C)0PZC_ta+h2;`Liql$4#`?n~d{#>q>m6-PzpvXLNLWzilMg#t=DN{N_PD8LJn@3hsoSK(u)>|O;hN1jU~>5&w)u zM+q);>SDwJt4s$vH{bPVxf!_=n}MqvzS_8zJtdq^hgf`wW~zgY4@;Ii&i~Q#^0Qu- z)nKKEm?_*Z8Zrm>4=E6X`sX8tB*-B@;bKE7gxsiCP69^_RG|Qm$6`L$yW!aIhv==? zOlb=s5_gYXig(dr-^lK0+&b~9iWd_qMAc`CoCp(7-?kct&hEWugOBv_U0=a-LBEO( z@xT6pz-in*x1g~)X1_xeKN%)p>s49kZ(Iy?tP_sx#7L~iM1C-l@~`wSwoy4Yexg+$ z)Ba-&H&K1lf#WbvbPI0TZ~|t-FmwaQpl+m0Vje+m8cr{{vKMa)ZlGtFQXz0y!U|#= zD~w%a({8E$3siZv3v5Mi#F&jA$T{E9Q|m8cVXCoQIJobx57S?~VQ_H1Ug`e3WAD8C zk%~Di03PJu(5XBj{Am|M;RNXsz$@Z@2g+rl&MC=%KqU>TDzbeHGFYU zZ9dz6Hqs8*J`#kA)pqK18uczo*@vE`(of-CoAM1@w(YMui*4{w12l9M$`+)Hq7DoZ zM4d}e!CnZMl)t&eCC6C?Ek4P1ka3WGGF3M1U(3wr-ykkaGV&CK1bK=tMFq{1;fZ%qJj0LPEw2;*k2Wk44639%eW-g$J+{ zT2~NcbNmgn4NT6sXYw(>YJHo*LQ$$5&kw9Hx?P%)i!hbyc3}$gCz5i`JJXOEPk7XJ z(``0FN=j?PjHB(wbl)Ya!6Yv-)GJi!D^KS%EmeKLpA3enWYR>t5;h00NWRT_aEZNLUCz1;w98P39Si0r8R(fv=*>nInfz_Z-TgavL-4E79%jJ2XJO&s44UbkRf7#2 zUs>J+X0R{9kn@iNKs6hzPTW3=g|$n753i_%H~xiH3rQRS*)TxD8GotaO}Q zy&t3D>?s*)?ad-7tKpdd=5kx5{`zrD#4d`k(_EWh1Pu>~iGW(`YQmI4>fq!a0af8A zhoc&3i3i2Vd~<_ngHCfN(1>9VQ_pybQ(%Q!LNQnt7y%flRfjOi$@>5Z=Fz6Qb4^JGCE+TH zNS6o(AM#nEX1okztu{P9CGnTi;}L*Lu{^4>^3eq;OO@M8(Sis{jWiKEpFqYQD(F64 z{+nCT%YgSMK5~{EsmIi#@zSZ>-B1Kw8C35vt^`;rpr=dRan^}2y*9eIw;Q(wv;BO2CRLv-*C1M2zHsDrx{}>W*DE%+8 zR9;aNf<%lVOpzW319jnI5arhpf9cry`(0$_SXLA)AL?0Z5s1st6ug^^1(+%#SY{c9 zsErlw>l)nIPuI9Atc0bIlz9J^`iX~>5dQf^Q5hdk*cGISX3DZ>eIrNYcDAK9+4)xE z%p;2&$XNH53~BcIyncVb*DPQiiwHR^fZ?wuHJBc@$bB>(H+Cx7XgpF#FESWhN?#U1 zwdF`m9OoZ*bh76V`I(~TdBDs;z2K}>MheC|o8gHVJ=_4LRQCC62bVs`YRiWSk2E*( zF=F>?1|3#4GcR40@vk?{KF(ZVKiIzprJP!7vcqp^>HMxy_s$-tZ8kcj`!k1Vl)<%* z1#KdL1&ZWtJ7`&3`av$A`ZZiNb?zkaGI6}xT=ddImZ=hFf3gNgbCA{Lnh40`+eb8Q zY@l}FB3HQl+z6u}Jc$ZUk}A9zGC#;_n(l@|3SY@>LlVjb3-5x3bG{hgPliyb!bFrY zYnq=CEtRO&(iKDpD`radfK5Oy;8kUMyOgTy^L?}^wIDD6qn*{w?dkY*z)^%zoORw! zoJ1hT9?sch9d?_c6OP8v3T<30nqXd@pIuut_pWNWQH^M%JD)i*L7lS&leCkQpb$4n z@wsx63KoEtuG`aLW58AT5y(R9eVw#@Q#H;Xxx!YY+{V*0B-2h&P zgUhRyJCg#NrL`~7RMEiI$8cy1$r<@CH_}Vaon>5i(Wrz#4GJCjs?roR584uDx}$XT zymUo$c$3ZHG{MYZ`Pe3#v*>{1W1Mn}(+G@c5jWt0xiS_h$f-K%SiKI1dVfXCf}q(` z0t6EsLNaD#(qGX0=gzGJ*g{K;nmz~dJS|Z7zuF=fk~#P|%o~N2?}EEgc?l2`gIeH> zRSrI*vr&I260g-Bvo_!Smr^G>Y9wEgx@?R^HvFEV*x0tO2k-oxfj#d!E?3fa4Z4+1 zSV8pPHG|-&!I-AS{a45?&1EoYPx->*{=!@RT^WV+g@z_;p%Ga@41`SHwQ}dnT`+UA z9WismhrKD>^Jeaf4SAWn?O_ld{4jHq&Av2qyK(no?h5^#Q9BxHl!*y@^NsPpQ&$cK zNv{j{zKB`7{^Hv&Ur5sQl@2fK1}w#yEYD7zRIgeAPg|ejGpS=OmBi8)A#|lxJNUXxDBWk8<$6JE9P)P>CDz5P)K?~^H^5= zAqL^hXLlw5dwekG8SH?%IhYksM^Ypx^ZHhIQZ?M46ihl}e%x3|J@M&uJr<)dZte2J z?K>u%iW)q1vE~xhVa(B|<`G%6%H(W9 zSW#I=uX8L3C_$brK(ChcdkAiX@KX{N7#|BDkj6q|FcZSlUclrJl*rBc_Ai zbh`A%{epwocuO#1tF1QNl|xd9q=c?WS+dHwTM8F-diXH`&CRZ=QxY~CAD*8QFUgl{ zNvpXpWJmtMX5uiC-aw|4mYe)pAfsPi|ZzgDp1q+9BB50T`Et z9Ek(0HESN^`W{%A{izRYo9EijJkBo<64i)4lJ>J)=ma=9th^}d@UWu7?i1=b`@cXX zpTa2F=*aml3zjJtgaf2d_ozmIbpQoZ(WXntEPRuca_uEK1Cg0-48XbVC2iz%jz{{Q z1J|$_RQ=O9MpwMQIcDpt2m@jk@*2HwuZw{1&aeP_4RH>9E~wC#J|U>kMmnh02N4Wy zMVcyjY)1olgI*SwqksOgR(Kgc1k&%^^pmvfY#1nASwydy)yxbUxJ`OJ=$)$sU^gsx z?O(e6!t&~>b&1=te1i>VzK}z>VFK+yWySx?Zj0;0qNoLFQSCs3!zo}Ayr(d>Vq_uE z)z?8C#!@am>)ttBO`ElMBk>|UcLJyPa-OU~)RyRn4TTVF`cm%BxFe_#8$cPT4uTd( z_mE^3iB;F{qJZ%w0&t%e5j7pgqOq4>xg0(vTh!Eqe|V$pAZp?0*53m)gJ1&x4 zC7dHX2othX7%tNom6~@@r%Za_a$&~Zoq`AeIT>+2(Qn?u5-LV(e9>pVU3XWNO2`A) z4d>MLw)d3}t%0ar+;$>a_-cZ5pS>M??XQf6=ov*bDz*EjtECWW*BC=u+xTvi{|&v= zLpXSOJX*>;G4*wS=AL!KF_r9P#TUXbgPM&X?IDFIjF|IPTJCgG8-!tZOt`=nC8aY1 zU@tr6?b0s?KXv52v+536VR%V|GMq{`bsz1iTyTGS&*KfC;nkFjm{6d=G(ca(L0w zrJ=FWa^^zMguebslu$=>|Mkqu=6Yks1>zS0_#V)$l%BTAyM9=md$tFkm6H?`gskZ(|_C!eTyDH@p+<65Qu$y(w zkg_SFwPXieFrJb}HWsmyuqkE^hotX5UYUZFz*$`j88l@D)#Vynu8n6 zq8YLA$A(4jGZ_Efx&5s^Mlj5MdNE`EXS^NPu;>lLeEVk-!yFIjeGW`6D*kxG@V|{( zf9K(0;ODwAiDtO|hNS*~w&%)$v}0LWC#UIn-_5F>kU)G~?^a>b6~Zr*f;8#&HIo=w z%cA`g$jQKCLH49UrsJFXF;tA=B=T`E9Ut!2ObC@4p5PR~&mo+JLm-u+MoF}a{KyyT z`!PtDSXc`W@5`C}`F6sG^KA|F^V(Wi8|!2La~E1zI5?Qw<9m1Ybkvx8Hb=)-Z{ckC zeUUntJJy(s?2m)%{q?cibWQl$Z2!QKm16p{;$#@S(_cJFt;1kU)C>?jXdoHAy*v1- zjDS)MRlH2ew14(Dpme#vJGeZB=PIH+1|iT--8WETNL9)F7tFdq$3aYus;J@!quCXD zAHJS3dhUFhFM5!BG9#PYqH}dlS)JdIp^X^%gbDn)OLh8l``X|U@s~hdu9^2lD&Dnw zB$TyBt68_9A9Nl}JFS;cC!?$_?)q@JjMiQG5W!A^VKyGXl0;q<5wIQ|XqAWuvD}Q6CKvmv^%z_&F(qf1T&po(6UT{GA5vY;7rm*Y~?mvMFWqxl2!Cifrn0(PUBYzjL?MUnJkSjqUdbev zpds!4BO^yBRxV1GXMavy8O=tSlZ5dhAP<#{+J1@*vus_GQGymMMc2bmpk^htBeZtXAoC1M`*5f4n=W$u^1 zg}1j!nU6R9b=lk_PVbkNhJ9h*7#qYeTWM~%$}k9{(*vKMnx_gdT%W)9)>%x&T`78M z)VNZ+{QXt9$rYW_jks-k&x&951>$_NDWR(EdEAK&&I1oaRb+}}yN=u9c$CN>nuifw zN*K+VbswhDHH5@?W8PttkVle}ah_HPbd_#lFq4TJTxns7L^7?pO#a@NJ7IgA^6|kHDn&LNrZhj5U`*8NywHrXlBmY`!%qVu<@z=v#}m#>CU-AsWn`gNw*TXWbm<} z2e!1P?n_h%D*VuwWF|*Asa31@nQDJ8nZ6Vs$?C-lcN(k#H$VbgMfS$BD<9Z6Y5wQE zt|zhE(cKCgrOhT^&-7NktLy>q=8fOe?N)IoESZ;wz(BejH`uCN^?#9dk3o_IU88`< zwr$(Cy<=ND_Kt1awrzWM>>b;-eP{Rm-uvB%8&T1nRh5<9zq+e3pK}gz z6!+}%(=2qSSZgegC|OaZ5^BS1&gWfZg-QKxh}Gc@+l0|{#2;mnJSzmV|6NwfXVQ;C zGBB{?_`Zi%0Q!DXVD@56Ks@Vr8(F{g@`vnZtGEf2k|VhO4TxV!g7_PklFCr-?9D<9 zsw<$8LVKPK>DR~{sxCsHN>pAralbL?xu8OjgIv0?0L?5s`i}sDAG3Mcdx+a;_wGvT zfv;Al?vCJmnp*&L(7XKz*+zpL@hZ*t8S|X*<*?upzoOS#UBX!XsFJi0Ol=(dC94%k0s0^YxV;l80NO?x2Sk#=I)0Dsj&@lJ2tsuo ziDH@uMw$Rjimc%5D=BzwsQ%b%sf&OtzK2#M=qYdM4<1q}SrK-@>WB0}SXCB&y;;R- zZn~k1Y&QY_Q&v)pO0qt(W=y)Tshl$ud|3?}Jbly!6JgRnwkXS5K;5;^Q5`e?l<4@= zCyWVJ-e1;qw|nNc&Ajvxey5Bqep(g@lWp%j&hr)qT^^9uJJsw?fL+hVA1dky#=9Z< zkU~f}j>dHW3kGvK?1+n1A$f_6LzW*s=y;cqmEBQyyc1N%UaNSJj7LP!a2cTAVGK?G zgiFjHg=}taa|F9!9v6UVEk&RVhZM*PYx=(WTmD|BqqB9I9$2YU4rQo zqSQG6^Ea5Au!apV!bgy}no7zti{c*22Sm~>57jluM^v8sj#<22F?K1I@DPPaKzU6R z!YPeiLhUFk)E`-gJF)j(fa&{Aa?N2Iess{YivthZ41~TN5NBF+H6f3{sW-qwgP^=0l%cO)E(#`F+{4t3m5uP;E$Wh< zboWdsLqjT<)q%myR4<*aT$Vj>r!Xkgiy38K(RSVWiobWM?pui)NRQZ$8PtPZh)#sE z)s1tGQ3oyU6jc8xNav0*k!E>;lcgQ0@IO)Dbqb4WLvgi*dKjG<_@8CHrF^ zinAnL;b)ULA4b>dI30Q2-h)LX7C#n>qbj`Lambs9oKPu15DQ@onpboU{BuzZJXYFF z5dRr1_UzD9+=kBIuG%4tTx@dD80t7Z!TdX}5__ha6mW{A{PzOBtX`xN!qnWHqb>Cm zHhA*`xtQM+bf<47iAu^2n`LK#1?0j}a^XRy46+(X+%~^qC`4aSRGx#W-7``x7{pAt z|Ng5weV$O`QGu<+uux|HZ!4yp1R3dKg;+iyOlQ00MC3-o6|5C&>s3^*6eel>a(r3+ z@$+9_FJ|F0qM3H>0B1%~2Ye*xRmJyc9;C7JiJ)7nl|ya{q??ziMR+fZuYJZam5-02 zQDSngCyl!$II=%Hw@r;T*3xtG`Fa^J}H5H|`ia1C7G!`TjYD9OMM1mtJPuPxz&B%kQIyN*9bPXgNLgTEl@3a4+ z>xDf8+Aye_iwBuX-fsR4bCBd)pB29C$r}enU3HFte7hBMMZjuol()ZO8t_|a^t*8! z9UT<^mW>5X8WR*hEHwIw0ZrO6tWM!(Xs zH=HL)-`8WQIJ^UhHuHzj+koOXgUYvdHxA_r?x*?qY0DMi6410VDz91-hUoQpnt`SC z%Ic#wMcUevS1OV^PrZ0$cDAx#je^#(q|s;6>K?QbY88e_EccQR1vFwB$S^2vxS@n0 zIfe!*s7{$l`zAT0N0`)WWrzG`?h_}4(CMJiN-Z-wm7K@imI4bnM;E3$K2Fx466SrCabjn zJiJJUX!+3;+Xm-3-`l@N+LvTYqin5Sk zsYYJ|cH$a;x&A2j%q0zJl&V8$pwj(REviIazsYwJQ;}Y1&!5HEf35(6f4hv_%29B{ znMSbr3RiX-=}b!7tVw@|W;Wp|M?{$vu(McUNwR$Y78cQ@Hg3B36_k{u zoEe8v5Dy_)M0UX651E6WT1_-=CFA_0C$}!deKSRIEzgij%;{LdPcfhkP@0|YTte?= zqvtPeNj2pRVQwDxFiPS&QuJA;q4XwqrgtiBoehQa@L9toqrWX1%xzUNcUVhH_`%kU z1>(%Fw$mrIp=68`^$J6y?{vMdPye(+qk4@*pHGX%w%GYnp5s{=#Q)5l+CvOYM++0r zUWAnE8e%`u7S-4f9n)+ra12+2h}LQN@<$!Q!tuM$a#&nN{6t}ke-@u2D{RGu&O{wkeCD#e6K$7$MWc61e1W4v(bK_*Z zr&MI$OYW}a)s?1Cogatk*v2+=J>tKJp_{K<5P*C}WAO5X@Amy9bHW3Y$njcqJ{w$2 z3Y%BNUbVuS=xj++XLP?cCY#UcRzy$i_bf>4wkR}B{)$3)0d)f#O9cwic{0?LY9OUk z1Za>ZkiP(1aq=%8pXa?5%WK48rZ$=SavdL19jTrks4Jr|K(f-K??A`<7XVo&%ee-1 zmGb^P6m8~_j>=M!t_^T6iMTwA=vV4+c{b@A%8Q}XsLIj9>t-aJK8}^C(c>KVl+kyA z#TV>u$3Il#WJWFM`C+CG4-?HGa3g(NIjcBaTboMI*=k>sh-^nh#BHWV^@Esh(LZ$- zc-In3?nuFuXvG`cc$05lPKdU5o>EA<`uC8qpH) zN`KcKd3cx>ss>I3R+j%{tNa{{6wo7hi^}#o=i$ijfxMjrRT5d>ostCs@$|>@X_F0O zlW_+NMsvG_FsO>{JXFFxRH$j&KB2EB-=1whfp>K}`rv;0?7IK#y8Vu}-a43F5?`|h z5q`^u)RVil1<}*!oF(D(H<+%X9W;UqFZiE)hI(p2+}tOxD$DS{a)IrH0Fjcg1h%-EoK06X7QiUM3ovt*| z&BISDBIHv-v0Btjzi+#WG0_9Z&40hqz+5OR!)|U!cQ_qTBg?X7FLg2+PkOF#rnKV1b@=bzM`^$#>g}bdkZ%vt28b;z+2jQSxGR9kr*=$DWa+P2XudEuT(_5(0JRc zNB!OkT&+_#BPBXMu}zlja3fF#ab$LPr@t&d$qbE1nvNja$}hrc!Ph9OjlPx|`soYm z>6!`ZsCAk(jXRNE8t!CM5QmQTugcI|k!4>XK_jBxe?lo5hDLmKcm+90LsxmhxJo4~*zp_a;Wht}Q zRasI_@v@(oGmw~qp+eSzP`WvIeZA={V*~VIA_0gi?q4^G68-APr2!!q~j z>*_Sfr~v2*y$;X&#S@ExwU7FC8)nB`P02&#Hx=YIP%?&&mr71@u9S&>J__Dng1ZN3 z|B7GyvFF4ubyqUy!Lk+80=Z&C33bBWBEYG0P6M*Cm6H#$Slr{FYgZmj_uKL}Q?t?jQgWHWLt>Su?2#=Ezhqb>=Y0G(G8p5ka% z34jqid4=4(T^zsP`jO$aic6|9q6Ky~c9&kJfXRmxmSY!V1o(>w!D|N`zO78tA0ls~ zS4-aopOlW)X_vV_1gh}-J7TPT6I2a${RX=kbNQ>!_6n$XI?3rxBlIHTHL_2w4HZG6 z+v{nPB!;^4*9saa(%v#IKYH|a$9kQ2CrZ7634H=qG|sty9#2-2MFh|RvO1Q`B#G0K z)zHIx8c{RD6N8pDYQ@ir*5%^?bP$EAc~rk@Srp^Le?&V%zFoRk04RJVn9e)~Gf)WY$3c zO1#lbRt-zH!BE(E&549C0d;+zI|E-+ag$y|A4mqw*J8)Kj<7B8kQixgP9GDoW~jnk zaAvWv5WBtuFMUFCTA>4{jf-%k^WfrtCnCtbSqk zaQ`DajdnIO`Jym6f|O$Yxk;f`=cy*0Qe%D92F=DRG+v^cF{C~0ez2AU+Xz>W}9z@)L>@~JthG|KEa?nju{?SL-?ZHpd z-(?FES_Ub|OZ;=8%MNJ*hgYOMKyCk)y;x|fGKnI=ppS<=lE(@UV$~#Yq06J(6&xm~ zrDuzq{>9VRB+%P+y^D`duh-Sq{d~K-(D7X@mHfWt#4(xDiMu{Cx?GKQey)>>t=eFj z!4QnxJ$%W^KhQt4}r3S|6tckV|=!f9LH-IwOCnW;2nVtKLcu!vG5V18F8zfXkAm0 zrh*JpF{C$oy49CP%|fTKF=8`ZZ8v8ziUv!Ug<~KL(cf9-T%`GD zNn`0O3#75;&Jj2?b-ht}9xI|155#D6*v~|?MC0K?ilM*k&CiT|1rmf#h|AfDRXcP>T$dRFSXq5c#sK>r1k*MN#@h&o@3a!sZa z7j52lFEsh~55_nO+6&{SWgrN4<}>litNi@-8z2X7H$fZwpZErCN~Lp5FDO22 ztHudEJ)P`PFt`sE7yAU>SaZc#j=+ozXz(D#lLE~Q;0`` z;hqEq8HzZRM2XNP0mJiK7obFI*~Qt(;tMjj97q#p80t`(y|{6kG&WF>h5gl%p;DD z&foFj=#WLoSHI9VUmHv~i*>7@f~^B^kZnTFiCG%xcF`w-wu zVg-D%4CHm(K+v#9ZOG|2ome^hd+}w{ECR|JRh-bUrhQzDzm~_f`+b;18Jk{bhKZex zuwEyptH|gZvqzzsE|DzPCQTh2ac%Ppv4BYJ%!dsu#M0U2errbd0vIsD;<34$i6S2W zN+%Ng@7%wH$jHOFsz=IB4|DhoYZgxSAH`JBimXThCL`%J_nc_w$*5w+1f-}=ph+FW zPcrRLZ}rZ&gDrbM1=AZ(u&;+T(Lk|jMWiMAY%$zM%Y|&DkU>)tDuUTw!F1|O*DcY8 zyi)Ah^VW86KrgL5eb+OEt6rFIgE#75BeiL^Mh=mRy6tbz!IuaC`cwAX z76p`rvCdmh7rK*w!CzBoFP$FXmZg;!%2#gPj7)<4qF@zdmDn*$Ql3mwZ4@GDjWSYon#|Ew> z@+*&}Q>e^9yT?)172j)0WG6{5Q33b_at~oQ#Q$^U-onk3c0yl4uB+wpEE-B*63%xH zJZ@O&T0w{~j#DJSnqW${gnB7F(a1Fvjw3mYk+l!)Iqj^+qMz$XDKV6qA7}jQuHJ6r zkr?QzF$VGx<{^Zi{5YD{L|8652Pfwe!!=&!xo|1&Wi?Ad4XW&X#qc- zXrZc>TmM#lDm1>Z%zO$~JY-9#>$Y9AKMmw#|9S5Q(?Hf)>avi-MxXm=AFE+tW0wuicsB^?;$ehQ7ye5=~<^ z)+!OOw5d{ejB92JX&B|TKADPZeq%*yLBBz1{}jmmZ6uqSGYv+Wi5xw}@m8-s$P~g! z!Ae`V!Vs2oE{FRYFlK0OV_h0otN~cHptyg znrGJ8Ke1L^TVS=qdzLxdp{i}2*`&WfOFMxWNE5=qqPOPi^GANB9!8NSyeAlseEM55 zbLq@<)$@`K`;Zh(6#hW-<=wQJ*RdwKOh4sM=ev{qY@YkIuFqanAX=y zW6R=V@>&s2kPEwzDkqFJ=UMAPh z=$e_^`IVXHY%Ay9*o~NGb{}9Xuu|fha#tpCs~qKr%m>grx4$K$zuO~gK(7*Emtnr^ zbY>mWg9vj72%zF72K-C>Esz!8GSnZ}-iEOiK2PX1db&Zpo+jsK1vfSYwo@BF^6BEi z%l8aK7vVpQ(a!?w;=kzyALH>VESwic1X_Y{GpM>53>9>0i~jtf*eG00laSo(*C_(J z<*5v(@lyIp!V@AOd~IbNh3QZE01{bZ9V7)Y)6i`C)BT__P$jD*gc(z*h3`~=cvd_d9^QB~3-2yB|1B|O!KV&CnPX0!uDuCauTM>v z$ct8a9eD(6 z=R@C>A7c~#Z_~>X2j=Sg#HsQ3Zrt$q%M1s`=EifP6*Kri2mgP&yX?)AUV;z2)hu7* zc@1jT&^H0(plSI)stRXg3b$xK8a5!VcUBm2xBJpDE{c(0J39Xq!2f3&uQqb>3+LoyU4%8+nTFv5i>28HT5#)bkgwp&`o>Ah+tKtEP!0M{QlX>o7MZi(W@RTrOGC zxvnH*>7X`Vw*8VDte(b2D5xcY`Hcx1cmxAwt)N@GzMorpLVI6n-Vn)n9B8=UhcPpK zWD{Hsb=5Epm9O&Tj)Qs{ZGq=HEEwAaUgoPBqN(=kJ4FIJr* zbB+73P9fKV_o(|pbOi9(U}x*P#*ZawF|AkA<4~>f0!vFm)3snJ&P=7v_4=j^KxL_O zMd?>#0gj-5A_A0!3dP3-rP}22=mu1@5Q?i6gLUlKcMn>QH;^xnRQNmNdgzOPfdyU+ zrJJx{MH+1nJ|4^)j)k+IIWtZhzlacXeQxE)Mv#-Lz*aQv8y+9h%*(f`PmaH{ObvP? zqzW%K@!rg#JiJ?Rm7b`g@>_3K{8f!HsNT|rgOp58%HDEBbC6Tn!}j-un+GTxuJw-O zlF3po=g)9SD0TEhWeF1vNI?Gk;y9a>#e^C#;~0mS(3h=!SNkOgN9kLCe@Phqm%_`7FzuV5BA1A>$&D z8IVL3=4>swo%c44Qb&2*V0bpXAqWY4^`)Wl;h%x$j80;Q6$U}M*4iWc)3D+!Si;Cc zu%d^I>1<7bo=QLf88j*0NSz^ojvRv_0F7qRtyX`q6sPgAhHC9)=G2%0Zz>1F{IM1` zeu%px-c*t$OT9>k>c!Nk!&gytn3yzMJlPE?J7KO#>Zxe*Hi9qk2zJQo-#)@OheyaD zoiKhi7U^~4U9GWQSR^e~=iH|I2s#YO;*>@yWq>bGgR2(msZHKshFRN-O4GrIjjyVPBz>G{Kz47w=6{D{7tiNAiM4+U46 z?^rx4Iv}4`Re^hZ%T=eE%f--i#u^6U?%Wui3lA~DvQuNATBGKa9I9cjEIMa9{w9vWYMr%M-;*?Bakn3JU8=;H6&XO z_ct>LCD|qM2FBGU3K<(_E;F>?>^S<+$4@aM7l>t5IrmCue=Z*M#S~E!w z0h$ifXeeuonOBJVu2*$Km&K6^_*2foYoK%=6c&IS^*i5}%)PHNOgY$=m8+PP zY7Iu2SwfYh3D&6{x+KdD+Ztd6>Ghl=})8ujycmgJ5Y zyj;ttY<pez9-T|g9-#>mP3LUG+P&=x~1q=dwk``i&aT|DwjyVqs5F2gn;B4BqC$ zZ`3$IthOGp%-t4o@LX+6d8SYxVdK`QMwlD_g0u1$HOBozjfj`F{mEIdNDOjYu{5iB zW(MJhOBkyy%gX>sBaEb*ndQk*6UK!Tod#9Y1!U1Q$ z^w~^)eVVqYR)@c+F*;YZL2TF@P*=!9mp%;+&hA~cPIJ`Fk7lAZv z^0Sa87>=q13-b2iu`;(Lr!8$A@Yz#>(!aQ_bM}R*A?MqrQAm*1`XnqKcCE64j? zxA6e>^ZsVvf6FApb>OQ5t?ae;rf$Ya2W$94CUZ<_?@R4|SP2+|5(i9w|WGJ_J$H?>! z(3_CPzTalmcR!98;2TV-W76rIJ1e2gXuw>IO}!3#v+)y|zpPvsUqcNwwC+srgu;Wp zFj)ESZw|`8;vwne$&P`(#EgR!>upEt(7md^vmI0ikP$j z8FQlRcZd*nR82IAi)Ih7kV+;MV)2ns_4(TRNGc|P)PGbSOsdSPe)OJZ3AW}w(iGCj z*qPUz9Gdt?2fc^ryL`>)DH?0cp#Fu8&|rPQYovd;Ra~w90~-U;T$~EH{=&x6?1Y~s zzH7>e;QTm#FDsN9N}{@%dY^lzJ=LG~pSKS~*tcSAFp}9z4Frz66@~`%3=^;{Y-NY~ z4SSl>=xv=!g4|?^NL~aqu}X2X;X>TO5bRqwvv2f3tW$U7ZnV^ywXCa7fsCV=yXi>F zp_CkNCSOJs=}^~3L0P*WcPzYkhjDul)Gw8g_`|^Jqvm|HhVMMn8k=i5BWrJgzdLKU z*>$ps+B`je-T279Ffsm>jr>mXjD%Rs>C5aW)v+^JylMmog`~#Ry#r3Vzxs9G%22#5v#~RpZsmf-k z?X^7F`aiO<-L>pLvN5c9QvhyDt}dE^PD}7b%S*WVQsn0rdCf`ijL;}bT4IEt%EYnH z>ooLAWdbU{AybTtLAIN2VKosXdV&D^eK4is0*w(TvW7C469pm~SV_V70GAX%)uu!q zy(yESjyimrPWKOnz9mzZZ23`0piPeLfGR`QcH*<-9doY@I`ur4So9$4)!+GW8oG0+ z#EteCs}lWz7M70korG=1I!pvA`)d&?g0VkF!?O1%|I$WFlHgaXGk0m||Io%bR-|lZ zA`%7b=EsbA4ft}%f3&gvKeTaem3ikcZDc#n>Ud!IbE`FUDmi$&22PgTEm30M`NIoA zLwa#0lWix%A7qggG1G2cLB%O>A~>2Gf?3W~T*6!gHYRRGFFTRy5f=Rd9Hu2PjjvS452s!N^O@H8b9h6A4b95S13PjsQK8-t-%mkP!};rz*olF z7ofCQxG?ycE)e#axcEoR^=c}erQxy$lH;(Xp_qg?$xwrA{Iotj>7v{C{a9229XI+7Z_f#keJm-2AjC;i{{|Y^eQlff)+%aKGhE!0i1I3)bWn(wj)&I&yIkWHlwubho?(20!nq$}wNR|EE zN}fg87{)m#e`TY+LTf3hyoqQ*!t8b#&Elc@YOnHxt(_0mpK|hHF)pf>K2jw-GIXofNfkDhf z1*NS>*DJ1ayVsSH_4nSljn#G)zGMe}C6-`fs9||C4 z(zse0Vy zixE?I!f4(oMVpfF*>Trb+D`tM-F{vCOcmt^-HpAt$17I4Z9Ptiu$FV&VANVOgFS&QuZ&0xe$RLl&@ z*c0g98l-1bemd_0cJ(KNv;7j78sYcjX+74~LfV=06a5Dpm0K;;q8gj2;_nXPS4MU~ ziBYS}%hFnjOe4^(h6sh6P#TROhr?S*TA7WRI|)hksuV)WQ53Dh9 zHB&U>b62p|7nNf>tMaUV4w!YPl?AhDt{7n4@<;!LjUhs#Zn{=1Zjf4DIM(d*$+I)rjBy@&P)X?;sxnP}pq3d5x_%Ia1gDq`iVGL}la z3y7UaONlU5rP~!4&=~qRNE|BjC8ZP!dWApYDhrENOhWh-K@tFaYs3djkAm!^nR$Vo z^wD7`BG>hSls+3) zn}$g9?~T!N=+k>~HED`YLv+B&kBkSXkrx{V0PQHLGiE-_?PGM+r|J*J8%Rfc z`%N9`?63jA!SN=3$cKj9gfFf5O`^J5+qm+R#3FdU;l&xElPmEwoFLkQ5c8O-@p)$6 z^5F{%J_V}Fzd%BRHT0EQhzexM|Jp{qc+@~KOu#qzA76L;BZdWSXA~l|ENu08L2HBl zVM%<%1gz=sFM`+3A$j{=uE5z|&JD*Aa6cTJ-@b992BF%WAJv!9U)%_vTT0{FEGeX@ z#THh1fScTn-COHQXF^)hEKqTig4JL!tU2V&oDO!SWF}5~OnYjSzjuyO6h_CsC?q@Z zTQY9pXHTJM-S=!})4N#pAFZ46YLkr|4?$KHy_VhJk(++jjYg=pxjCZ+HnwM1GhxP$ zRfaeM+)Mg&uk9=@3nXQE(AyqvxjrNEK&_Y+Ey)N*DL2>~V60UC1! zGg@j3V`~zecLc+$s3ln}DDsHJrKPW;gWvY$%M_|K(+o#_<`%=ffzhzP0!R`zxV${> zQnWN0Nj*kw+$=KUHnA7S6zxDk^U#7OY$R+xmqDaAeVu<&m^a1?lVln?1$POA$E%{E zQ%CyNoZ!l_mu>;VL|w%mWXanRO`=78<3>+?oegQ{HR@;fV9g&?!=mk(FfC&HjP5bp z!NIb`VZXOrLnUm3`d4(NS1}}qu)-+I)T>(O3g3A%uOs|#nd&E|j9tDC25B3auOflq zK?6ABnO%MdFkJ%)Jp5_o_M&vWL()nJu}{Iu`L>M% zdM2s8gBdU`%Q8jN1|CAM)>f?FX~dfQ1LE3`KybfpBaFVo`}?!tB{N-fGOCWK7L8Sv z+nWmii#oK=wF`rfIGQ#l2F;ZeslW}K)5J;?OMgUUvo*nfv<*a+3H2?fCPZf2;lpC# zmPB8r3DY6;sR?fZVKVfs)#v#My`ZK6n^xgN6mgZSEuOJ%bLCB7TbJ12LphqG))R_% zQIf!7Q)$@w8)T@6X8C=+Fmf99?DC4$AzoX4T}P3_%Ucg+_ImxhPXNN}6i+7+ zx$99Qng5}U8lM&LD&MqG^;Ju>i7p07#*9ASP$q{z>S{=DC4G}g;(8afs$fMSibSoI zt=llY_;TczEwtYu%exPExg7omG>LMJ)vl@1I`0FN}f#et~6ixf|f?Y#?A!^ zhrfM&P68v}17X5Tox?xcNHLyT#|?#8kY>f(fa?eBaE&i#4VQIwTn0LA`Cga{x9e+_ zy!wN_HPIVU{#mgl=6A$qt){#dbYngaGi>#evcy9*ZLrC>qf0Vt1yr`e-DeDJ=TnSk z&olg83w{TZ>G4b6Oj0n+Zw*Ze{p=IZExKMZe$`T0!E(zGX*b%YDRzKaeP~+s4VYAB z;3HMve6XMe=a%lCmW_nMKtqVvgw`++wgCWQ#aN*+3&DnrJm|uG8^JqJbk02Lv7l2b z1Z|kX%ivZoLN&d7cIJAdHYS@NcJS`5Goq-g9uU?W&b^GYa4f#5aRnQHD$=qS>({&J znQwovBJiRLJPK8JV^&9WH1Jf8-8oj${fuyaQl09ZMHwnf20FTNX3RlW9vC@sH)TyjG+vPH`_N7 z>y1L)Rn$4dB&|o`DJ4gh#x2Eg-;a=|AR-BAlEc7{cj&nqlm$Vv%ffiQU!Di6)jWi1 zsrwW|7%zey%?crk0g=`~tqPFy$%!#4Em6jjdLy<L$@;qMg zy+A*t+bbKneYv*5-cDT!BanZ6m5#g}g>P&QYA2+%Q5S=dT24VFK+5uc25b6V^0+&- zru=k$Q}^h_+GAC&+wrQ*#FK3G`x@_1KAh@CoX$~wz^l^+V61D~3#GcoSMD{W^y;2b z8ZbO;jj@KHc;KDkFmAJCSC!w^eJiAZ}DCW}Lxe3xNu>33( zB&mC!XI-I?ovb|+3LF#^)igcoPLzAa#`;B6%r$v0KWa3T9G%A@s?a;j%)9I#u6pCT z0T~4<=)Np8x&Wz>_rZfs?F|z$9R0!n1ecS@YKX$(*tF;L0+FOsbarWR;npq=h!_luhu42KE#kyB_weo#}dnR z(H3JjR>$-zi_HZ}pcL$|>t>wvt9G)eNGJ=L+0JR~YMlRyOdvrY_tNV7T5$JvL|~&z zuj6bxPTz^y;Ew9er9DA*s@k50ply_E)I=tgK4e{@&yzDIyb?3vK+aemsg550USL5k zhQQ?z1j$P(wqz}dvge*}jw7{p6^k%z)J>vA(q8B+WTj`LQ-r;XG9Xn%$Zn{Qk2-V+ zRp!gUWo4oxBvcJ2MBdovp3Eb-iEq%%185DILF-MCTAZ|NoAdJ*abMboYG0R;_ZN{< z)$|Pt#8%5UD^$(bd)SYrB^!kkdvaBfFH$74&L&Uu_LDDqmU4>iF(AyQ_0fHiY0;Yt9t=ourZb%v6Vx#t z+z+o4ab@gP5c;rBh?3k>XY21fN1Y+9JC7}vOSvO~%*QJU4j>D4$WDenZrQD(pqr2) zBc1e`&9mgn1`vN?gE%5Z~F z8I!TJk+fAHHC-8(PlOL31iexR0(a4%I9C(OTAP%6_uA+1#cp$$^ z8MC0xh;HYrOwWtdp;TpKK~21Ce7ltlZvjDvx$s5&`4flyjo9sG5;X6jT=eKvOST}h zYQ9}gf3@Yu(RB7?4%{g_r^ela`$(T-tu`)=+Lujoh0lYHd7!hEj=6SqJsdx5ctd*a z<hOlhS>k)OI4@w+tNr1E#q#W0IudQnUG5O&;nA4#0u^``HIeit%Wu`4q3D<)`8vs^;;|W79&&td1J#7N z^yI?gA{9Q*cz8|4v4gOESKGK6V_b<8)2N)E=kRAnPKvfel1o+#XpM^{szwg%FSFZT zWqjo^2g47;?|U1=lP592xj&?IQP#nNm%oy=8({;xTbhVCHz*v2m!pWV#VlD7GR}0i zOYkqcxHp_!uJ5PbTrNL6EW$Wpm> zx+t=0*@ME$+<5E z)hkst{B#qUw&h2DC)4c7{VK*!S!B$ER#!ul-Zzsvf*79FK-`RV=WF}_Eg-bXVh0t>->XMJhnUW?-wcYnz%7K` zyvk^BFFtyT3NjgJF-o%Fn)9ccR@sz0nS;@4x6Y?w4Ua_y9Eq&|yOhxNB>nEy6JOMQ zr^wgWSHUPV!R%K=+>4_FpH1e>fX~2S*IO^EHf`%y#X(CW!=^D6gs_GuNU8Rv-8i#D zOEMH}Cmr|oajbAQ2C~X-tu}Ji*5koL%U8#vhjMoE+mfw zYGLJO_vE(DWk0e_WYOB9zf;CZ1a7!l1%TOTB27uGmFUJrTjF9iuI&0pW*^oyn)o7} zs^5XG)Ee#KV6UE$2S{jdzdH0mu}3$6LoF$E;2}Iq04>>QqM-YLKqCr18}wG(BjMf& zMwkb+-N1K}^mIC%HdQ|^Q`Bm$_nAGV>P&|m>$m;VZPG7tAe=*j{IuhZdeQ?vf-_2A zX4H!Ur*Ga+E2N_jA3@of&evRqi$Ar!*ek9~8&)P*_ydV%jo>hShU=_KtYl)}7vU_4 zX1vs+)HVtXjTYILaI!SYrcu34G}X>z{YyKwnf0;c*Tbvi8dg&JI#bFj{oabK||V zWzW^Y@uCZ1ppO6_5>4>Z8?k;|2?02*Xw_d_o*_`V80MLInly`=nzZ6^T`HAg9|))F z7YqatQ;jAjc@WTfQA34{bYzgoP-ih#sO=2%uaCQ=Zc=i&kMOx8->&Iy?$~TEwaTAC z8rt=8xqOjAcE^e^PAu&urlk7ZSe$GtxNn3W$73rP?rNBD*hW|)7{3M?4CA@VkXS4Y zclG`vV3w?BCO~ZXb3;6{VKgMzbOrpkfE-6(T?15Y-5@f~^C^ZY`Ambjp>d4JG|F3W z#3OLB^AAQ^%fxnfP4tX?Y08p3IMF0mivQPH@c!@$N0LMWMNh$u%k~o z!xhI5_rj^g;rYJ&T*vnSiH zb&b&o)nA3*g;HH`fGrK4HKjG6)8Sg~^rl!nYsWKmKBcXU>*Qk}k zqL|3TzJ`i6>oemo!xBi~s6=u9SoxLFES{L@27m$sg~V@|4Hz;k16<fzK znSW?XbcEk_=ZUWN8!mEF04;HWuCgJ@A)U_Uhp-#|=hw;#9sPhh` zmRJWZ2(lj(cdX8D@o(z`0f^rUzzaRsnO3WIA=sT6HUyHSyw{+U3o{4yB9fl594s#> zvgo-BX#n%O@n{5qZRJVRuVJ_$(O=*J|Pbdj{Ce=n|&6roR??}QY!GYvOv$%-n+`@8YAOiLY zV2n^E4~+kmfwRd#P%>Z?CorR>Jt;p8N+&7>ZJj`JZ?4>ieQ*y&<0YztP zTC&E~;2gJ{qy)aiO3Lp9zMH-r2zrCzSMm15DRCOf(|B)d+&=I;;?V&CC(bOWJ>D}m zz@XGL6To-)lGR)@=Zk$9Gk|5)L)x|XJuqP}wCc03 z9KI?QeNi(g;6sb6ie-u7+E=fy&igL{U0O3!##;ZK(A>DPLh>40tfjmmCpNEa#hZ1z zm}j!|Qp{$GuhbKRqcc70P(6Gu3YS#eYtv>Ymbsb3cEY90$s$y;-oD#kG>|Jes(Z=F zyT=f!ZxTHUTRX~cbY$lrSmO4sptgChg&AEX+=&>(i^_!_cbzzK02|(6FqH_W-7+Fgw7^1aut)oZ*=ms|#>+-gvXR{67+myN?X;NM^>sA5GD_^DL9CNU5iH zwe!LdOX)u~Fk@q~^zh5nWWi+9%fUjhfn6}=gkzI8MTadPQ>IwXTHd*W#F))JYElUc zPdQhbv_p@nt5C0|ezcQcKF;(wB5kkVu>lP1BoEq;&=l1I#jjbxsDg+9=<)4W63%4F zNGk->_mkF}IeED|`7!^g$%&SvW~GEy)SIn|b75nRu-95J*k+udL9o$iW1RjjzB12Z zf3Yi5NLRY@t43uHmM0|r)&QojdZ&K?AT9_5reh^f8<__kBClCl6@z^Pa7?V2V36{O z>6iHAH#YcccsJvceaUh@)EHxUNAYPtU*irmkxj)gKLM`{J{F*b*2+k;8$?B~UD34{ zjLQ`{IsRz}cJfRhj_x>?kq!RweVDD<^p2-?=Utt%%H&E2usXZiVUf zfz$8DCs$5r&w@e`Tbzs1O=5QT;fLjRuB#6A5H(7$AUA(fGQu&>H3RyR~* zmM{nd)H)+r(GkM4|2!kS+3nDSh6pBD&9kkgjrkw^E3H5s+;{o#EsK{rukb;rR_b*{;2*V~Sg~x5+oygsiCv&P&$0D&ES8mYwiu|m z)7XP@y0z961f;%LYp;+E0uI@Xpq!ZArxS>L`#{U8(7J(?q>y5DIwwB}axMt_z!ltE z+|xj7Ok)y7tV>!zB`B_}us$ArW)RNe?eid4;ylv_?&ESp3AX5Vwiyue8QZ3dR zv#qn6LpQ>IVl^|9@7FAAx+w>9Rio({87=PF)5{kOEd?kq^b6;Ic9j- zX-Ezq&NMZ7E%W%J+oG`dYL`KcIlc;XNqis*m5|akN$j`wUenwCWz5QLrIjRqgAJtXJSa9I9Giho(R%3Qj$n?#<41?Mt-A0-LZj#x;R?PJY)DQH+=> zXr3aNbM+$Cq$@ zHb(Yn*1XPV6@{p*O~uriKl4P8t}1iV^ONW;fw<*8P8c@K8di<%-Brbh6H8v4J=e!r zT`Z!n8@sW6TRy~3ZgsH;y>86lloK8cg!FAsGAi2Qm{O-@d*nWm+n>v83fb=lYgqC~ zXN~RQI&D<4Y73jP>`HqyYnbR62L8C(Rq5;uD#0i$yADdF(OESWK_5lpUK13yy-9TB zi<}53MN`|=pOVpdV}Fc^-3Y|=#qF3}8h7-ZmzJe-$T9K4l~kK$Oe-H_vFiTtsZgJ= zo1=!>4@_a_L})Ei6iIi|%+DOX1nDT>2wL*Y7n=M4trV0(TN-+7As(s~8J4r+jq7{V zG5M6Ecdh2BsiMJ`7(0SWmg%c%5F>?4Hf!6Jrym|=3hiq~x1ib09j$W(@np2&3$7QC z0^Oh5i6?78**pL4o~Bp@NSBptbk%OE{VtYzTclv)b#1n`phSDJzD(Bbg{&O}4_l~C ztF$96?D|8WLUShxFSQg+MMHAFG(18%zucsg-`O#(kbDO{?!0|P+Y|&zq%8bScA?T( znME#bqt~-7@iQ5!rf7Q4JTi2q(e;jL$yg1OngqD60qwxLu}K=#ptts&gi3%oPV!n- zm9fy4r`zkcJ%^#Jm968McwnaYD%1|cxJKk3+tW;w61~W?lfSZto|13XR`jKFZ>1@O zF*V4x%S1irpnDv24|32w`s1K`kYBIv5$F%MJ^Ffw-%QDcsQD2%v5sH8<&Kzrp*s__ zR6!#B>O)0^mPEg#ycp}H+aH#gcg8Bylh^lzOtOX!H^sy91~oGQ8qJyt%{Xtl91Z{Q zhly8e8>En`F@70rKZ@WoTG33)%~-NL3EvH!RSj)g%OY*0IJiz8(6sJO{GqvIsNdiA zm{Krz=iP7^Uw@1I+lo9(gJX2-kTY>(vbH8er=1n9ZH9Fzz&(qCw>lTae)w0=Xbvrw`YlH7kN z5#rP~fZOA-G>ZG#rj4obMM0Gc7u2w0D>HWM{efx;3A=OULFsa2Z4J7IwxMSFGbwS& z6RtGEel7E|V4uXaj+q^D51VF_Z!U(J9Ugo~0y2Ojvc&ZI3hV8Jx!GpA$>v zjXsc^=((lEUcP_fDw2$5@AmU_2f@Y_L|XCpn6#T(0pk4f!o1;bA8-x)9m|Qz)~uvR z$%1#rsZp3q1En)uWZM<1HAw4t%cQtvbpt-8mEb=Gy-YX*m&XNab^}&m2&o4qhW++R zy0J->tw@4x6^a4cy5fz^D#&D6wt_dCClJ5S7p+##p5*M76;Bjj&1jvidBd`%t=SV= z@fj>ofLb^&^Ax95!d(e_`1|K--TJiGWVAaZn<@G3)zx+IP>mZB3(R2rU#Bp42dlT9 zizP-%1S^}_R9Yr->_mcunrkUawF_{_SPukgG86-7hs3W3{5J0sR$M4Vk@R8|B%4jlmgm;v%278FR8;QO&jhN=6&D zlC}QvL}juvX9@P!Q+Fg0$gk-Jl~ZS^RTu{aWpjXAcX?^bd;#ja#X(QR1w6Y4L4$Zi zSpS?rFt$dsR`7qdtgA5W>WIe{eBmh>{WNLEF+fLM6x66EAF4 zO>3GptmdlWS)f%c0gsjmWHZ=-3I$Yu(ucg3^+TEqx?kaMK>G{qZK9-*nh^dN$>5)2 zB6yO~e4an zzn9gJn7SRqc$Q$F_NAiCEb8_l(1p4(B8+^F5<%ucFkdPePipNM-o|vi}?n7lqa+-2K z2|0EpVkyeI3CJ;#E|{J?n0y?87)ni!Bpyc~52Yo?l8z%FL)8z03CGcG-AYGJPBxBV zK$nUn&Bs%VtDWL!pBIn{bW;YC&a3z zr`8^D{MUu!50ySUDRtH+#U{W_OPlo)ViRD-Q)b7LVH3dbq|1J~H#@aLc~bK09*M8< zz~1Reujzbyda~=(L|3;B31|~fa!t)zNKRv#lD6ulqb5Km(UjGlRMaG>_e)ounyNY> zO*K75b=o!(+bC>Odg|nyrm1PEsVS+wG}Gh-kEWyUrkEzfe3(?!$s0Q@1vNSSbYhM+ ziKU);IalduIi7a9{jFq}BPplDX{5W&eYUVlN6dTjl{Ik-GtDTB}P+5x068=fJV|q2NOXPzz(O1 z-b!krW8yEI?3sA^Qj9YtW*^Qr0DE_)$Z+ToOvUi(&E2pwBzo zYwq7KVwz@6OA7-QL!#6DG#whbCWik`fzz}oBsBDYm*zOzM=DA(PBP(svgX@+ znQnWRWA_*>xwXCT6McdvljwXGUQ^TT#*i=T%yXZOA+5xYu5)tX@(T-EudH{_yTulE z3d3{hBh30!johgJ#Z{M80+C)3h<2m?)yjsR8CwlZ5xt+-MrCJTqPP#;Rp-EkYyWUs zW$fUSVcLKY)|?H&#%{~z3t%RNCB^Kjw8&aC&ETwd_tx{_!oJ3*3BF{OpN-%rh~(xO z6Y?1Kg=6^N(1}Aw$f}krt%bnGnI<$&zDZ=u)l?y_P zYE8W;$DI!25um|10vjptAZx)0$-TmfCyUh5YG%-$DM{BDLiO_7BA!O0l$|3iq7kv|%&-!G|^y>XlvBn$YVh z?Y%jD5WO8rEtKl^MN5MQm~H2*g$~m>0qld|KK~^4uVhNm)$~m>@7bMNwy|kgOX;j(P<7$dp83 z)Yuw2?vMm{oP$^%@!&@uvrp{_79O68M`8AJy{QtfkH$l6<$i0eq+!tWMA#FyAk`^0 zOABd5fi=n4lk91T8GEWVRa1<&@cfwV68|`M5)Wc=uI*KfBJ>vZ>R!WoM9Oj|jHu^7 zu}*D_UBGufv`+OVi;aytgHA+XkZ@XQTs6*QSrrVU<9hIoV2BxvhC(hj=CPQ@*=6g? znrL03U`>+x83AmS(}z<(?`wz;J`nh0BMWOU*hQ%x8eJ^?Xh5iS|sUjQrWTe$Uu)$+G4zq*d0~ z4bP7qfpfq9+5YPb zM47x@?_d)ffYO?gH}Xm!OWacq%p!47$BC=dqm{BPr`ljVX7oSc!XWcSrkpw{g# za+n-UYu`^+ivp_&>f zz}^BA!XpX*LI}TsxVHc`GDWYv$y(lFP9%IYDD6}-SA>?*NJcAu%Y>WtK5`EPd0$16 zBzg<_#(%>(?;1&#kh^VW4>O&UOPL3d(+Pt}jJAUKHNVMZD;fl!vxe0r7hxNqXv>Ax zDVDfZ7)HozlF7Pes*)Jd@i&R+}>W#5{%Rp%;n! z{1{mYkCTruJrf}opFKGT!SUH3*oVkINWid!N2cc*bjR~G+ob8}uY0dp*`+ZOWXG_v zWdQK%pq>t5CnO4^28>d@CQepUwef3MLl6!;Y|OI)b|K|WTiGLZZ9TZiWNAchQ>tHM zg$(HaH*7OQy$_%7P8ACz_Oya-;X%n8Yf8ywSM7JoR*ZtRMXLN&&Iz0qh)}r{#|?hd zUQ+w$D9mo7+)Rx9V@}SAXbXs?L%#+HmwHzQ0530>*?)$})T?50GRP67#xljz`?Iev`~Z`EMP*{WucE`cWxm{11z2s8*_w@lNXoGWY%qmKh@;6L82 znfO*H+HkexbWyPX|4aEsHrAs3L-=fBB8H&R~yik286UCP$9<+Aj`gz zYq74O^$HwfMzypQcvZ*+Eo@neajJQ}^Q@b>`LWY&dlML6yFix1SA0=0qw8wS{)yGn zhMaalw;l|@Rit1_VVLP_E?(mESfrADpk-CCGx$3BeD;$RjATWt8di@VlSQM>tN09g z80;|6Bv)>-ceh3%8fyww1u!h%6BE{)^B0q~PhS}>CVgRx%n zXaC#2tHJVyNMRs6JAoyfk~^^ZmGlPfisuk8RQk28N$YH2JP$FoX*{@LDE>C)Zc zB$9vB-FVLjN(ZQvB`Blo%PryfZr!83L(~X~K+rf!Jc}@jY&}ZVt@Dgr%G_CI37Tfd zLDq~miu`cYrx!mQfv>@d+NM}#mz)r4C}OWg#cF+sAb1GV-)2v$+}oe6eSrJ`s7Y^rN6^&HyBB8518Ayw&HFA;3`KBr zO;!Jxo|+31E_7?0Z!pjAw&|lYwDjbrIr%{Z^NoVce1K_xcINFuXr|`*KPK_`j+ciS z-gCp06PYyrHz<#FXgY|Ue>~|{dkQ{lOC-kC1V=oyaOe3f=T1OTylH`eoI%SG%@y_L z1n<+pre(JGQ^!otwA?^j#caW|aiXX6!CK|$^OMiXj66NnST67y!6Evh3DnySH(zen zS}D*cqPq4fTfzgNq>BR6aygCEW$2|Q>AmRA9v{;*?H#_fnJbEqf$Q{FN2hoR~NTC_MFVf-=vWBbCh}oBu+b4Had-<(Znw=u*H~_7Edog;eWm_ zbZ0Io3NzpMM}HXSi5E+s(faHLcnn9=UO#L`{}r|^AW&-z@S-X)sB%`YTUNN6;9<80 zsZr=cuS0Pu5Qhft(YU?FKwTDeHF`;+rVYKN*Wh=biv9juA>4;gj1vHiBMRdAAU=n% z#=~<&8BNw@+nBGNK|buta6|!W#8LMb3H%I&OyO-weAE2{=Cv z@&~amevjW5n9E)WJ_<7p@gE4mEfRg57)5#AJ#WoIHw-u~91~hI=dcD9u1N^(MQmM5 zBXx1*oaNZjF|%#Hl?lVZQkDUM0a>Okm951Q7nVZ4>mU$Dvo(hM;s^dReq;1`9xdAJ zhBelsQE#BJPuq|MEvU%!4cU(P2o&aok0V5w6;{U~)Y``2lV02)bfXa&3#oF{Tj+VA z37Vxh54L*VY9@k?)Juz&MvBu?cJ1>km_bpaW17+{GDe9cC`3l^-Tc~x^uOG6O zsu8qgN8>6Y?5f5*yn@!wXzJQ}yCZVwy5xN@q$3=;H~TZv0_4#de)T6)K*0NIK>X~@ z=As$0)$DtpcPvtA=JQ=ethFiaeVCTRi?kjRy3OyfO?wX zDC83>@REiVg(=iw6>(5F8`){x93b~?apUJP0MG|!ylH60#`aps$U@cqSNv9Uz$B9% znm^a9s7TH7Hc)W{CJAi*+}HmhM%+?Ha@0G>Bdq^Ce#v{>nlFLAf%wapgx#`wLn^5h zkPaa6R4Kj^WysIGv@uekGs5budUa&N?&vsP$ zQJ}u6e+mEV?C|!#7s~<5NWjZ(*3`QxiKhCX7vVFooPU1WS@Ox}Pd_o5mvs1l# z&ldmL?Aa*^Bx>~_nw2rtv<t(+lTL*13uMHHSC~7MiHq1{u7x{1&dCcVq7)kQ;C! z@P_=ZlrYX+a>J-PwgAOT+@t;)e9(~9*J4L z_MdeRZn4p4`b=Z}Ci1&zb4q_5^yaKf%`PBTK%1`||B` za-Qdg1hk4R+rl&ioD*8{_pDaHSZ}zN&|02-ka76ruAWO zjgZsj!U$a#hQY-{NL<@!HSwyUjmGyY)*u?0atroTUF$h(?50)4L_UaZjWl=2^?FdCApHygs05r_xJM zrZ&f1%N$y#b(KDx`<8vEqzYR&?B48KcGK0`yi*L9yU@#p%>OaDCnYmssjeeMFZ$b! z&s#&%vMb~3xADcv24I?<-pH2RQMB1X&z(8B=GAlZN~jhcu+7$I!Z6LuOauSUFb$_> ziXn)VP1qx^P(z8t6Cbe;%^!}=$kB(T(*F_7QXS37Md|wKaIs`{jo7ka=7k_kz9g;i z+KN5`QUt$`oP90tNG`E-6uV`j!8WNbF3mgLXjAG;mQ^iF?xo(tB?(o7O^Vb8n;IZr zGLE`eESh@15Pn_UXa|-71ie_=MowoYU=bs9xN;8#K`u7->zV?4NC+`-=1)&@cKbx- z^w}9q!Sp!BN907-Fe9zv70kAq zHiTw_fv=~*p0z1nPLky5Bv|_?e=CY$Ue$IVOnk#;#n!Fy?JQ+&ntR(vg1e(w(-__9 zy(yaBLK@xANZ?6SinRlwU%X7;C;JA(yg_*^a`Dmyy$C7+w@+7KL2cqRkJnif`XtOj^XZ?=I{b z^grctXZkS3Frj>y=}#0?J2~~sEg7|A<;LU_oITxAkwUeEru_6UuvOvkMq{1;$@J80@1!Iow8~SwL*|Q+8z28!j z$)aFc)G8pCxDgKIfa+#k|7w2oCs5vun)U<_;K{pJ=PzHsnwR-+*79!F$XTn{j5i_9 zm{4UQG4DU6HbF(3^%Qecv({Vq);h7sw+hYqUX$-|eg3?_=5{AZ8=M zAqquKma^8kS@&^?H5qKelUA{Mj-UQiHaEuTV6yL6u+hrU*1luQp`A6qc5VB@1P3KB z+BRzpdsuyGc(yMV1F~hIVs=V9(PsefGH_C+#MC{Rwa@G?!$ut+6 zECNe$`QH27$j>1CeUf^A65qVXcBaXA`^zC6U9Kc#O_{QWQBe%3m9;xSXfds6$r@I7 zr7AKhgeflnwqoL{q1jE)D{_zze)aOfJsiFkZ7`q9B!YB-Vt9dm$=mn~`)x6}@HMT{ zEJ^n1Em^?*8f(O05$#G=P}FR63osQj6ke5bcMT1n=A`vr>XWQe|7O7(M{vUKK-OR( zEmON#3X+*(2Ef$4RQY)qlpV22WsS``boIENK7INWYvuf}|MkC!tO+GK%Xqo{U=T1u z_~Wx@bMjy3ufKut$Es0eA)B@Ns(zpcI8YHqkN@N9?VGOZK>tn98r^pGIwXXr`5%Ay z!<@Y2HDtnYlOJp&GHJ6m9c3Frp#lqtNnzb~jfpu8RA_;ufReA)jmgy1*jw5fs7?i!Ui;?*QQsr zDaP%^eMA1dsh(q=O*t`lD7~OO#hTU}6NF*vIWwiO>{t+HN$VS}BN~c4CzpERE(ZcD zYTu%FsiYg2u8|m{b3LBVk4+juO;kf`bLaK%AF?d`Yg#ER!mNc@D040$qq!4wN0>mjCIUeSWHXzfq)d z^WpLhN%a$~mc!XkJJXa<|GOh1bMo2{WxQN;p=8lE2s{NDUiWEwC-vEy;Xth2V?f0d zz;?;jNR(qF-z+bc&^=t~dcD>J*YJast&f>JK3#LigPS^%PCA^~Ik0E;1)KEHOZ4o- zS4xC{9jZxP&_!Ky)D*RxfGBPJIgltJbV!b)cT0 z4TiKiZ)+-YQ|l;WH4qZ^p<%T?ix*cHB(M1`s}(u?Jh!q9mcDnzx+hvQAjBRp?Rn~hJPb<_5YY%_c$V>7eCnRm?+EY$Ae?h?jM zC;)i?e|a1Rn#-((syRT9^_g|?3h}OO38EY;S8?hD+L$ zNgfb@6;WUY)_mNhkYM#ibPjqR$Vx`cdN@GXfo20(=={tzp%XS63M9*lW=!9<6jQrp ztO@4j^o=6WLf49?DNk=#V8S7*1_HiRdNBPlP{9UM3My3lQI&({;J)F9@D%up2S^OV!|f)_HEc_EDmAB zeIwmlXQJ^Wrrg!K=RQ0>p3jdl@S{^0+GaWX6Ja8g!KMw}xQ02_ssXX8Ge!B%)6&j& zl3Nnz7e|2!1mD&v`f^X9s1t=;#Ury|S0pi6CbAF|DR{|ED|$_Mm}(R`!C%g^s!gF8 z=IN4^vfi9IF#7c#T=T?u_r`8OXNR_~nP`g5Bg$NE=VHn1-RK`m=Pm>DsaG-D66W(RwmfX@>#aB$Gi&;6pdGdqxdTl{kQ(F}& zbFAxEf0!bh-QC!dd7p(#sPX7Dkhu?pkoqln0^8M4sAXwrY7k?cRKnLe8F|O`NOQP`9*JkM8k4U-L>rd(m*C%UNs) zwE{}1yWA`BtHab=)trd`{?TFD+D={;Q1Tm>A=A;i_Aq&dB1_#s-c9 zhTe2_={0Ep^HI(8215axT9!l!TB)^!ejgdFXvUjBtFW48&|e0ebuhg%lAW5kX8+jw zxjoIgmhEa>aHH<+tf0#7?jT&F9xIY>1dZqHVnChZ(ztzK9)yxhS92L1O)m<{OLC$Z zBd;t<<6o}Aax$7B>wb`!DQ9L<#r1DGY8-R6o67ro2L>m3>dd&I3s+{ z=Jux`NDIcYfkv({xZdS@0K#Jj`_9lDgsJz*!u|2jdg1!bzs&yZwK@39kDBAu`hkSr zAm$A}pc@Fk{^`d{nO{{bo0~Q~KcYrVm}u%qX{}3{V;3*HDlq4o{nLg`m}ZKG3TCun zA{wb|(_n>cOoK3J-3WVf0%k(n1hJ74=+0@dnYSM2g0K%_rqzPZwUs_WP z>8kSR;<34^FjsOrh#S@}Mb?QzaIld|Hg7-zDmEru2+ah>p(9wvl%n+pdnuaEd$^co z8{Se7`ARBU0A4ffM%rd@Qj{!edBcRuNzmNjIwS-V8xDXcV?$RVW<#20fL#uENprxF zubl=EGh^7(pi3=b^9GJ(p#>7>>iR*rVy5U`4&PO?g}fMLJY<4{qGS!tY4iWF_vLXh z?f?H#h$2PVlG8#(rCmixd$g#?k~qyw&C$%9X_nGPD(a??olqeWS+Zoyz9dVLEFn8( z%TiLI-($`)OUulea_{}z-`DxWa^{@Zd9SbcYkz`Lg=D*fe8?;;)CCzZp%55i$(npk z0A@l+K8etPp~&;RF+z$caf|>Dn4pUljl@PoWdukKEl$S&8p?q;UZ=mE;U0 zY?9?kcT$b0uOQ=}BnYoX#-c4*Q?l2RN07qcKqz)OBETSEy~sdw8R)_m9dgMQX&%oG zrf}GTs7&-c<1t1|dcjOK$YF;}gG8zzW~FFbF+eAg4P)mL@AQ?_d1-ueC=i@GOeW^Y zYk}D&cv+BjfoAov5xW-p03m+^9mA~`)KNe=CKU|pxQSUHy&Cc%W{@TsBA+ufA>s=m z5K4$&Qo7iPB&y;Uk4O0s_6M~n`NMw~WA#|T20tW-04^1NQ6L@*vH?bl2soH9%-87A zOdLI2#W%tx1TPvT`Zy6!HPGUNh-B8bmWpKz5%VJAl0Q!pXCbz9JXeyppjj}DMq!~q z$f)*DY#E4@FF~MIP@k6p-~7W@RTynz61To^`3z*EWhC){1jOuxha=+OB<3*`w2Pl* zWygp>htff4$)M&QLNtSUo#H7x3^0&}<`VL=!;pT1v~VzjjqGZ|lY}r+eqXVA+=2#r zQ-UM_M+;xl1uh`rqDasav8P+?JUcH}wzeIW|j4y#(7yd_k zNjxwCDNzB5Dd8*ppu{|J;l>h-VCY!XL5oa>ZD+ z9s_0|%#RRNl%75s)7-W=k3NFpaubv#gwv~qDiGlU0mL99xcj`*6_!-67r)qC5{W|L z8_I-1e+35tHav8YL!uIjlLi1bj1(7Tb3htR085Q60~nF9Fz<=5=tYc?`?e4zSQI7= z#EddQTm}h^>Vr5D(!`@Vv=ogIJ)Vu)rJx|xb}rDTi7{4uAtAOX48$Incu;8uE1c&9 z6ARu81W6&`AdAdKa`{0Hgo2Y9h%`@6&=+Fcia{2YqV)L|0yc#YOeJV8F``@!Ob0m- z39(K=K|-D%Iv+X#ckmP2REX$+2shZUA}Tfu$s__e;V=Nvd6GGZfS3jm%IL>0+&3n) z3R;Z{Pu20G5~~R%vYt>o8VY33YbM|0g}Y*KICx@$nyA2w(dEfjym3L~GnAYGZ~2B( zXyUDi_yw}XGAgza-g`jG)ddAJ(EM$PjoYBG^a(vO3uZDgyE0whK(uEB)iw&7!V06X zk#G+@t%EmpI1E36(}vbxBz(%WY^n&uH9`yK=mXQ(L1*(ayiGi{2-$mLLkat<+`AoZ3IDO)ufMa4GclQk4XSBr(O6uzW94gh{GGMe2ccNH1zh zM6`SpG8BYY6n_|nMN%}XMnp&@YK`Sxb{-DIm1Zg8J%Cnb4{YAs>I7km06Khp8X}PN z0&5o#LWv-5=>V_@H4IDSxk0M+6N6F^ zzR)7H*pwhScD!MOiFY38h^Yd-@Hy+mFz}~cBwH$k5+R}HW$O#A`vEi9REUWK93uN1 zTMfW;kOoP!iiCTJYO}5k1Hc33@cwc{LT#m7m%PgXrm#I=4)Xp#GD&FnJ26F=eH=n; z*JwCAl8Y>5I|OavhxPC$A7TTp3;31}p>z-{EaG_N$Il{gM<9n1Ou$wpdeJGYV5EKyi4Z`D;F9u;Laz?4Yw6+? z@k<)}BYH`O2oZf6Uo^x;U}?2b>3fa{LQ{~4@P9^i?ZBM2mfX+=qf!SQWb(L96i>K7 zHc*TdiYmln8v%9z8)5|0D8e*wyPeSI2$SWth^GjJa-lGgMnMxlKn5Qb2M%f_e-h^w zC=4D?B;dzbXoXNBvEUIowP(Fxyi($)umzx zVHhqqkqVP-)@w(q7UKEsA|+G^1j9a_MGSMimL2Y2zEg+#3fZ6(eiQAB9i1;oZi`1kgnAip3Y z8W*yKM$J9FRmseRLqe z;{-GcN0$vyVKxV#gCr`%;FmsO@XMr0z>#6X?J|EN%C?k{L%JB|5Vkx8pgrie7eEoY zOUmLy%H+3vUx227u>oXg&_fu(#X+7Gzi8VBK>}Rqd{ZjK2%@l9=~< z#$|{CkUH4|9FP@E;qd4H3@$y8BDQAD@2wp#H6)8JACpC-7aa#w0RV5DA`*3o#7G9g zEG+Vr|04znz?=E$*xATsaM)r)vxtGUpu_Ly=Rv%PzOLY%_GU92X3@yu5Lt2#KO4~F z5z-ge69NjUR0u!fRj%-Gh%CimAdia<0v?Rc8w7wi3IIf=FgU!;%@Qx`>mk(i0Y?a} zxPZ_`%I?wwA%>uQhhPFE*{*o|3O7%%DI7E>97%JAIaGiR(YZ7Z$e_SnHZ4Nza{4DH zLGs~Bqbxu-04(b7*hGHx>X~K%>9wsn{xze~=~r+sKlCH>_U}QjdvPIcV(J z78VWcCMIMFSt{DMX0&6$!1gS5n&OoT@DE@`6~u5iRv3iG(gQ3mgVFw^5faTn4#=i( zB$?wxHx7rh?Q4w^_u9`a<+E_u)72`m$vPMk_?6IlZ6EZ0XtdhJD5ZfI48&uJESuu z+dFQ0Y^g8cg+&FGf5oo12$&0mWA)=OJ;fJd+5nCWHkU;a6nk#*8A)rHpw4u+eNXXkvggfk+aOXg@(Vpk<{pYP|rI0ka_l zq6XvuAj(WgTpB3OZ-iQZjQ|HnFK=ab+*dL&6S6f8<+A!uZzYlK9S z>Kf_df*1|L4ok5_aRg3&V}#3di!MAP0Pw_fZp2G$P>^t ztUMy0b9Al`k~yoysh7-M(IU@5?QYo?{1tz^g@($%jb+M-4_!di8iZd-g$RaKP-o*M zK(QljG`~@!y&dfw+#QYRG$^<&Z$Jb+<4f}ho-DB#$bY@#zgZ}3 zIU17u8-WybV(9{M&dqD3g5kSx|NS;T}6v9W4a zG+KlJ=K-^hfWc_tUl!&mVX~kwh(-w(X9%Q1j9{VS9>OIak=jti1(a5A3guv+Kv0-B0)Th}Eq0*_XxO{hc>y4oH+mclg`<;_ zfuN5*Xl9nwJ;dJYME`IKe@E|rZ}_~3A4`Je9prStk0qWa)-tL6SmOOx|3D~yCr=t= zNB{rgyMh=H2Ld@TODeyC$Xk393YX1+>F5qa%$ShGY+Db+nCBYQnxLS_CZYo&WA4h} zX(gb9m^0D%X9Ivi3CG$5;qL?EFtZ|32bebAhA=u^D=b#rRwMw>?6ge{3MJ0=pio8& zODWpbsa%kT4xh*GF!PBHKk?RyyoNVaFby7jdkL2fS{68B>3aUz&lxo}^5 zF93zuwX!ruBsnuvOJlK<|Ig-~NNq{_N4<-k7H6c7Ef$F(=Jg4YvV73+S{^UOHaW8R zBrpWB;M5>4r~QeI{g21S;^}QDVb-F!4+@HnzwB0;>#Yz0&^n6P@hp(BX{zzi9@i4$-f5HVT_?WMn)i{P#4FehQbyx-dYgeViipGJ-MD0T*o#+wzG zA&ky}6;^0J+#Us%po2^d{E-ZYGr~a@Sqxqup)?0{AxbKXDVpdYcn8HLrSg<*G6e{P zIBYa}4~etm2Om@#8e zsA4jO1kqa(0nn!`OiYY`nRf2tLizy!Bq35cTCoak5i%jdgxLmwn~$f501FfQRV-nw zelBl~@Q2d~a1aW=6Snn%9I8ZI2nNgnz@Q*>1tM%1V&j|vFE|1PQ*jJP-WsDp66)U~ z<`mQ}jMuzD!z_{S@J|w?3kCoU3ZVc&Yy|yLd@c!IMVLil^F)3U$l$dK{g7aFu_%Tc<6*){ zkVK1_14x1-dNj6?I7x_xRA>_-Ti6|BvQc~tp4^Qf@4!d`FNca9+ytot07#(Lq43oa ztRX3phT6j!!upBrCTWm8It0-{Cs@C|&1UN&a)d}>IKE^d1x=tm85ea@VpUtD133{d zxLeiFst{ADDD4ro8g_z!|TOGn8mE?MFd5LQ9Lb;**Lkder>e!TU zUzxEy|(YKKow^g=p@gUz7T25^#s(^TqiV@D$KLl}Ei z`U65*BqnKan8f;&TV7J*FG+{KL>$#$x&&q@s3J?hl=pAAv~cR7&9vi4qrh5 zXTlWm7!QQe{EZ43LSI5addsUdia2um0X_(LD{74)-fHxM@ep9L4GP`{G8ixlqRloy zab=|doddAb3XwX6VrN)F9zv;P$ByCZ0z&75v{;fNgN)I@M~O|MQs|)6au)A$;?0Z~ zCSHcKAP$FuR#2p{=xhKEk`@LO5b-K%g_%eJw})OG2F(n@yV9wl^%6?*M{SmficOPN z`2mC?w)hq_91h52_hT!Xgxrx*k(6YKLFP&-ijplc!qye3NQ<$=5cX-drb)=h zDYZpPyd?%85s<{N!duAkS?$R2wSueHp#d3NWWvy{z=op z4jrv{)QnT71!jSm%&*KM1$Hie@ykYG^0FYRhX&ChtiTeFol@9R`Wf_40!Abz*8n4C zM5oYUR)hhcAn!*h4>mz-FlzdUJWk@WSQG|_7V!^D=KS#^iXX?LK~HbCv7z;xQF{JH$UjEvPtcFX|1(NoUr%rLWOrv@FUL8Me)MbxmmY%t zFIsOl#c>WnBKrChbfj#kh+Y6OIEFCG5S>yRfWsmjhk{=CaCdHB3yyw42`%Xq1OQPI zcrv9&4 zmj8`dHMGnIL8^ZO)&9eQYCag;pwMg~@n_Psl|Yml8h=KRDA6c2#Klc`>HmpRlYIS& zQu`C7_9seB8k&Ei)c!=N{fSch6QxGv`V*!0Cra%%M5&=lTN|-z1UrY-P!t5J{r?oF zhQU1Bkw`F?!SRJdCubVhtOtG=41Y7q6{DHzpqehM52a}A?9~Mx`u*G2&)hFckn670w%;l z7P}9H1T)ATF_OL9%;68bpRT5&VcS4Avb)_m^}NW5*WEIRG-5 zEEptFDQuyZOGf$=Tv(YAegZO$8w@c}r2wJKlM-nW01M`T9KtK8br*$K75+)yM+j0x zMK%sA0x6*dW6cp72S{im5H~HsG%{X(*~*xw|B|rX&O2j}f{+{-pb?K7;GIrE!mSed zgsC||g}E%Yk%M$TB@PUjAa9~3C0xJe05l57<^U$f03Bj*d7=v;f@-E39jwcU2N24fUdcx~q;BC<*_3+9R~N+8k~Qh}xriN#l=>*iLxk#IRFR*gFCWnchLP`WISun+ZbVnXewd4HO0kg<@mz4q_(A z0{O#Fg6VXSt&cik0FWf%6vFCP^3FvTNE3{LQ0z-*7bl0p02yL^r=pe4k;efzoPlG- zpm@Kcs}dk!GMWUELMRL}itCOH4mpAW(y`*?d<1L?xdm+rk+P_18ZDxO*EK`Ms?LrS zmn}t6U*5x#_zxR3{j;Dj5`~B?%A?uYPK1dquh*&@_;d>G3WUG&{k}*IaFE7hE8_Jr zyn0lNg%TL?JD{S8z#F4mr`-p{vQvrYEGv*$wJ}{*AX$`$d4pt_4NRiJq!7S?f(Y&Z z2JkT}ko;h$&l5JhCpk=GOR^gYiPfVi9MWhK zg-IQaQSUf2`pv^bhZztDW=Vm_j=zDPf+Uzm!>YN#L4ZAlN#&E28kyiX_y3{@MKKU<}?{6g%{ddau zcLw)V$S#Mc7zof$iA*nY=Ugv8dP{UZnc=j9+ao94&>18L$tt)dH>{|ewl1A_qy@}JRUh|T*O@bQ^~cv83w z$&kEQ;ycEF`5C1sQ|SC&MH!t`;0!|V01$)B>jH%>Qa=uRLSnEw$WOmPgN*_yfG-sy zg?I@$Phb}B9z*CBVIz(d?-5#OShu{SF&qfJgP&NqVCI9367n0!X2T>1loTL@tOdl% zB{;^&$T8OW-XX#c@s6Q#R2!!-KKs}cpm^3Hbm~G3d~7=18FXDqh36-Dr8S-(?g5j+ zPlV^1VUvxEofzP%V7etok_%z}VfYV!ySE7w9NYb!e_*%&ggEbnWaUR}LTp>+mKKh6 z^d9D3LU;=kW^!rbg3ww)D|W*FfPTL-Zm5o+=I9D1=CqyNMX2&s8`)e$uye%HBvRgj*E0`W?lp2o$*;5_N zmioO=I}*JMZDgRkip@aBbIT=+C!xG^DRZ&g%{G^uM=qYOaE|$J%^sH`XIwZNTr5o@ znc}T;z$H#sd->rKGQY+1Khdo4--AlhQ7jT^5uhYzbQ8?fCZ5zmC@cGSu)%c(My_x8O?SkGOm(pMT+J)6QC%~S&W>w1Ze)| z6B)famBlPw?y@vV0K^gi2xlitQ%qBAPIBu!V*(W0$V8TyT}*&1-w+^GPBCFdM=ZBM za@H_`%!A*SOh7EtRLcBPLFTA<=|+0^18I!uQW-LI1@E+Jp26!zNfa-zcuYY_bq>tq zfq%1h3=mtVl5Gg+SK)R=jkfG`o<1#{sQlX<#NqzqI~8;NNAU0ePl9lF#*4=msjZ0{ z;}GV7h-q*j5rhnc`||gnotG;>Vo{LHVUWf)0@|o&gAKP>s+hEh%XA=zL!mP{;#bKZ zC*FVFiT7I^0#q&?WEk>xFyh7&I#tDvK+8kK2*CC#dbA>zKP06Mg|8=4Bn=dt%D>T9 zg3#;0_@L53i(OBGnS@3MJ6JJ00)MRV4K5^p2pe}KaSl|__Cm5Z1r$W9RiTO+NTb2w zY>CYjKFE3V&g&nRP98`B=n#tqvoLRta5u!#L?TakdLo5|szxj*nu{bi@JEx~#+>n2 z0|6s58O9BBhLi;mo70LMf4cB;`G2#-7{+Gu&f4i>Q_MuSfbbill4F<;@>56UMy$#K zn!$-Dll&X9qj)gsX$}F$3s(`02yu#|!Z81Cv0u1UBdnGQeQe z$e`!rHOXC{w^9)6k*h;X545nfg?_-J^J$GOhCr&*x7C|}!!Z1Y%uW3Kk_1iF#>wf` zvS0-o9DvuxVdE@>$mtnICx>*dBa(vx1g-8EgBAA$Lu4-6_(3eq_H07!yu{{!9BvC9 zDJqV;^LP=9g4S^fL~0F@vDa`Z-Ioe7V751xMqvRY8kfy!omJ+I*C;RoJYWt0F-SBn z8SzI^7*7^cj!4&>!ganNV2AND@(%=Xl=V;9( z#GAjxnY)=FPyCe7TW^6ZfmVhr%b$ckJ>XYo~v0+YneCn@pkdJ3$14PC2lKJ1iSRjK$rLYXK94v?tY)E2}MSTB=E&d1#>S$5TUc6}np()1m|Gf~nHigy8jq1NHZ?Xj z8zTc4|K`57d2!hskR@Z>>2I~{+<)X6woD%VNAvr_DE3RsRlxW~O+HWWZIyQ&le_BW zmFu&{ob2Ns{_yVcVae-gPnO<$x75W~)k)`Um$TmY{GVKoNo|U(cU`!+$J}W;UDmkK zuWqqcCLM7Y(QkjWw%N>iSudw*c{e0B#l3j(;>DThhU{N8SLdD{$7n8yo3J_h^P3kX z6DEwe9&g=n;q%oux^sWLQmVQZwS8B&Y~L9_o_!w}{POXA_USWzvb%pZxnv&s)!013 zN_*0)4bQBVdj^}?tS?i&dFW&`iT2ZTx#zDR>qmQ>c-Q>k^IVVR&9UQ)bQZpR*Q`HF zZ(32=cJ0M*4m(%v6<7a8#i;Xl%%3$()m-3lCvFYvyn@z&=iBPTuf3>VKiA!JdC}O- z0|r$`1+7Y|)q9gN(nv4ev!9Xt`o>Xb`g}O$Ib!uy-D8;(R5bO2bL0oCIpvd3z36K7 zjWb31ubi)~_GIWy_PkZ*J#yuGhRA8>pv>GvFD@>Ci@QjI&!Dk z!9~gMlYw@isV*(jCt&rvRYCg7-6QI%Uwy9KQyrWEtdS24IJ3<nF>!q_ zSX(>B#8(gfrkfA^wG%X2Fmv;^Ux@}4$JweVwH>s@u)TE2LjW1N?XS^``er_(~3%0O+T$AEXuoFN#|^Wr3YXTEy|Q zJzXc*6}ca_vkdh)KJMJigJ*Tsg7X3EqfaI!4M^BBXLIxS2Fjaz^4Sg};?#-_Dqer` z$}Q-YCjT(PBBLhCKG8hx#S zH%nE5hg&;r$kw|uN+;=8uaPqqG9ny2ZcR3l-$uLa8B%GUlWSAev*hclsYh%~gVzPD zPgaOnvugO&?cEXnmuzceEw#;oSXvizA{ZNW7+k`64h>NjqT zRnN%^9ve-YT}<8XH`ZSJVw2;xziEP-*4ltQ`jPXGWmMjzq`fU1=lDj^_LBA0t%0r| zW4hE%x%SuA`v-BIWC(0;1IN<^x5SXAsfby*1nmqdfqW@YT(U{;0~1=$0imi zY%)+hT43=mVwq{Qdw!jno^pfpUx(gi-d#~YwPxVlBR)Ap{eSK)j*d61vX}-J)4swX zlQSvHe&t6wD*061+gUZ=?){3YbwM-DzE4}Pb2H^f*iWz7Uh1#1wN%d)D4g%>r=XSlWL{RYp1g-2 z)hYFp^ZJB4Is4OU8fA8lOLKnhUi{j5-3JZsw;Q)|mS3D}5o2rKd-RTOhvqgmA3nV) z@`CHwZV~#bvz`vWwVGV8`PI@j8!sK4Y!<6J=t1Uz4gDx@F45RO142&Msa+l;m-b-F z32**%rI@4W)v<_$1+f9-nXTKe`q7P3ZOHysPju0PUWUNrWE zrt6STp3AIV*N#Y%PY*S$xvtgQv-o@(sI;a`XHv=PZY8JcZ@9$lQ~PmOz5maUiyN~k zp0k#ZNIYHjq*zU{VpQQSZKb-YRXeA8ng#@JdiE|Qb9S!Ux{%ZFDbL@1f}3*<6HCUY zYn*gnXseiGl%vF`id!ExnV=rgvz~FwX2F$k@H({{+sIQ+F zdzMx<*YA(o>iny`zP|a(!WU;QpHXI-S`54ZL~Hh5kvrzzci&fQ3IWjzl_?EWLZ8q3A%>K`oZTEfSeCJaAvnO=};d1PyW>)j-QGHU9A0 zFz@OPl1h-zs+3~&mBs-0)_LOji>rI7bl16l+3zC&Iw>oj$$fQR^~P0e9|wa_wYS|D z9RIeJePQomN7#U(t+Qaa%d2JYvyQKuJbQ4Xtb-p2X;%D+$gwz70)Ia9Z3 zeTddO%^}OTSD)EF&hxX|>8*t?r}WO9X?xK&r1GuDd9zcjGmGLML~ni<5wyMe5dHn@ zGR3Lu$k{t4$0alvW<)S6ruvQ5AG7_~2zK#?@u@Q+tH>jT5#x>BlZPDVm z7MkXF|FF7R{ev|vs>kbkiiey#^Y#73F)zs_!8SnNr011g!cVgrRhE$th9`aV@R;yq zY;EAXL=l_nR9zi<)bHone2v5?{Zl zw)ePFn!N3tS!*t<8?9D8xLfAYm0P)=k3Mf$dT8*F4b-s!qkU0a!nJ4W&HT^_4CU;bNf`*Ec*8K^UJSu z`}FZxG=6Jz^}?nr^-awU4+i91xl(DkH1O!4+?S81vqNVV&b+a7&eLzva+wY*7&pTV zwBeq|Z=INvl5w{1w(Yf#1@)nuAMQ$|WRKAI^?p0GKxcSxRX$liV35VneSx>PRg4`t zfU|J%w^bqIa-PV~FTM1a#mxMA>)@Jct}mNruQJtovd2;XWz)vYn&H#4tz14A_uO?h zXOV)*_O+WfJZ`9IZ1{Nh&Y2S{VrIS=TDfLv8=LxJ+s*Nl_RqNpN4uZr zz8v!W!RTGEW9=lXo;9!CLv>u8R4A*obL0yRoK>iUkByMuKKv$i7I;E)tIL4ovKK!V z??~1Bc;xZ%xal)4~F<(hjA#@k$04_L=sw{p@|?bAAeu2(|wQKTz@1I4DKl=Jv^3Uj!`2NS9+sOFI?K{@z z%&2|e<8`!5O&o?@zg-wsGIHPe7q`^YvmJoVJL8Jd6nDvwRFlgo98n2qK3Q{~W>UZN zNcN*MwQq+$P+!)yZ2aT{3j5bP$Zy(Y{&QOD!MnB@ql&qO$5M1kuiq+PcCD8^!#v&3 z|M(uqC#*HB{Z8kPP0BauWz>Jmls>vJD(^GWrzSwT1qH{0l#+W?{33hv*j9zoZ zD#Bi;WZh}m()5)@O9sV14}+%5&;9DXQ4UPKm91NobVpqwyZ(da|lb0+>E1aLa)$@(d%a7MQ`)$owXvrAXjp686d1?8SGhZ}4{wm&KaXPRn zD)d2J+Q*_&H|E}1dmT3338QnXKUEKMOY-tKqtI8cyth$$aZUOB=R2afiM7LxCTRo= zc~=TqPHnp8ehLDP+%zAAG=!jkaS zK_wn6|0$a-_bl*OEu(09HfyF`c*EYZ?HPmSTMn>lS`jy>&oL$KFzDK?V|hakcAa>0&BXE$(tfvQOf4QGj0#PD#lMC`9NNZ~beaPb+?2{Q;-*s1|Z9?3XfpJ$x^_y7N zz5HR1%t+bvZkA)aXGZq$`qFnAT&&~jW@iLbKWi&<)Y75a6gQvDi>mX>atl(G`d)*( zcI~Fe%3~Cb)EP#PzvJF;D}PX}Q`Eo__6Ob{yOJ{caLnBS$#1Nmpt`d%jO89;V}JkuziPFL+(f z&8JDPxoKlopZdBjaJ46GLq+z1nca(SA6aIUTmx_l<8RYvt8#YlvvUtAKTWP3HhlNU zl`m+!a+4=Jh4gX?_U&UcyX&eWr^+rWSnH;&qBABH8oexNd>nO5aavZN<4V(P#~uYg zPTy3pX~*2vJJl8qlM5)!-)O6x_*%b&ouZ?Ez}VtM?z`2;ij`;0qqq%-xOw{SfVYuc z)hEWJCpS{_;uhAFr3CH=e3!i&^x(mz)z-%A$L zx-KhkG?W`Pv)8%x=5+_FHlBPuubQc!_iTH@Lph7H^f{DSt7Ib0GOUCI#1Yh|~`+iYw&xo6KZ8+KON$ROw3Ax7nK z3XPucgD(xaxaG)`JR^`BbvvP3lU~l5W_Rh%@n1vMncte* z=j<~2$>9%&?6jOPWvX8B>$`V`Li@{l>{S1p5w^9bR?_iaX5JHzD5PDUlG!iM(P{g! z!RLl0$V|%W+iQte)xe2*=CP}kHZZoGG8{N^hJxCO%c@(JJ?Q?hzpb{Jf6%$b3YTs@ zkymq2pLHupVX^M9HAl_X^+N369QpmJ`f(#!S@l6yrcCk#8RvzM)U7WACa-U+p3$W3 z@hyqHf99t{QkUJknQ04Ou*2%MZN3&Z_T$jiuCdIbo-3}8kiR%^%hXulNx8zxnqCe2 zx_mlW629fL!HWXe#cfID^t5rm(my`TQ;W&_OR4Ae8RI|NxXs!`^ZNKTyk_ODPc`5A z$llX>ai~c7%=og=Y+Lt_F@C0o7TvZplb=Dlt+ z)2#-Fr98i}r|4Rx-s|(>330Q^`=_3MlXP^jMY4s#tv;h;w||(@vp>BTqpz)2>h_h} zo{aQ4(7QfRZJVLH{o$XRE~h6|oi_Sw`(yw9&a-Ex=vB;jn7U58;&P??*o82sY|IWXN4sP;f6+AxAv%oE!nYf){4(P4yMMR=Jvj6H6`8JEYMIMeEDH}QFT&iv7g7? zr_Qpfk6djpovdvb5O-#F1Z=qNT-3zZF@=$13!8@APnZ|KH`Ph*-CqYzhVANMu6G}} zeQyU~e&=Z3>_O_)&obnkZN5*Bd{+N#b{FSHVA@lcMGlH;>ebI=uK&`ee0%Crlk@i6 z*xT_HCYe?16c=l6y``v_>a5k{T&c{17f->f8ph_`cXzdap=>h4*!+B#4L_ZW-=8b3 z%6XeLWbi}tjEVJkV!P50u2W9cvn={%v3)`8WtAO6?JAUce@snWrBq>Mbn0BUifvaN zpAL2iebBV~zUudR9y>0wOK99{F`LfsNf4r; z^tpBEO=8vaW%g|M=I7V8C{F1+letbs+2`Gf`KNE4dcW}Si`zZ2%d|-MF6ExwVqNL$ zdw9Ozy)_M<{hT*gP>$RR33^#Gd(&xK2e|IsqCKgx1=EIZEeJ?a@Gpm${!!~GhoHXk zAFtnSIOLSYJe2<;uI$;!5|@*knzRfL=ac+Y=cw*DbiuwzYwvaY)8=-`Pgnl1Ynqqz z*209lElxwn^xQ`4^>!<+k?n4q?t1Y!X5Fk6yKf&cx<&uFH>#5Q%<-OucZvPjeK|%w zCqLL$@e7R=EwVM{6X8tj+DwO3DZxtT_7T5T>3?J>NqW!gb>FV^9{PdB2 zvsX+jqxqdQTpFe|T2+JLRc`;->z+<(cQE_F_&Ey`KQwxUZJ)E&F40H`Wq}11BNfI=0;>G@2J4>62nvHA6$MJrU*O|cM zwZk^POssT%CxbHAr$s~EGV9Y4X;m?Dg)1(1i5wQuC32Wu&30~VrE{qEQr?StGMTH~ z`ksB&*!?NX*4H~ir~X~mD!0B9hp+7;a|o8%z`LioStD{-Z<&NpAVn5bmw&<0TU_bf zdt!}tRm`1kC~b`;mCgaNmCh?Jm&h*Xe9E(0Fypi;bBB_5x8=3Y7w4Tz)97>d{RHnI zrRB8?b2UzB4~-m_Dl>5KJZkLw2MLM8qt2EN+|f%hmG@|=e2;nGhUp*bVZS{iH<3X_ zz9R=YuM9)}=pWl9a+u@z8NS0Wm9WR@Zaq=0c6a{H>8d|>J9(+vSVF!#Pb|vuKN!4V z--gfv|Im}xH>#RGmnV;o>^|3G_{y+}rWZ5kr&UE*I&FJy-~!DEnL>FBy~~?zVwRdH zzf^UON?HC$s?YSsxQz*03UBnGFh84; zpT1?q%xk>k5>IPCIvld+?T;{>}?`RxeE) zZ~f`>`gJRzztWthd|Rfhbh{{!(dG2gq)CjBz>Dz%6H>bLH3i6bpM~p?*XiVMsn3pj z70|eS?di#p_UpeMKD_s%?);r6Wao$7O3GiO5Mx>J*1o#3aE0ZXq4`cHz3!GQcdr_n z?sa1H`<*?8NBDUumyM|(yKtH5&DYdR*BB?m?nT9$Ic_`?yfN)XoSxl>4;A*l`6)#^ zW5=Ao+WSSpAlElK4hIs)L>Ta`Dielzo^E{Q*<(-q{&yMh>jg@b^xIg@%WM5`Ut?2IlaN?Kvmp!gFr@1bqRvhhfHf^!CtaJC}kFw-8 z9gQej%6pfto(ZK7$b^QN(`WafR;Y~$L|*JF<2JEd7vFA>Om5u7p1YjA2g>notciUq zW8Bm|_JMuRU02RlXF(5TCZZz2Vq=d)6>7y@8FPC4PWl|AUG(=;sTHrgQ7gVte~f$T z(&I^TeBvvyCvO(?P(C)R%hK*eTiqAT$nT+;YL|Pqbb*7Snqn$bCa5{hG|Je#ad%|Z z((cH2u>C3rId>VD3C(^PzfWVngW+vI+gHBf-p7vjUE{2_>NIn|y4Hhz!~DyK1UU?S z7PoK~SlMlDoSw4%^Y9;PpEqiKySs2s+5?6!bnTSu`RJUJ$G<$;x^Vrr>26v(Q_uS7 zY2Q!ZSJ!Y*?XS(*Tj`AhN6Jpv=``RJ*~EN)VUl%W?4en<##EhEl&Q?DDVKVdMCM%V zubcmN`&IUxAyZ4&+=-%k&Yu~7ZOY6a8Yx%f%E+6Cci)$>ZREpEJvOcnKfid2=|e`- z3VG8UZ{=sIPmbxCj@i~+zv$O~x-X?_&@1{9zsnN~R))qhG)oQTPArK&z|ahRY<)8& z_L_^whV$oN)@mJpTA=tW<jqgpH zviHU_rY>C)ls#qRq%T|ZCNuMssM-CWTz^;^9#j-EdVtfa{0JwT+NKp7HMZW>$h}op z`ef#G|I*zvcR}abC--_}Y`VX%Y}UrKjEa)x`PP~1dl`nwj%UspnSD=Zhn-izU$SXE zy1ftF<`;C=QRBI}h81=BE_llNl1a>L%Ax5I=i_vD_MGar!*%73$=)^7jl32w+2*dx$*7-kW-a>O8aMv8s0!Ln`E zpFfT)?yr1b5%#9b9NIGC>#ChE%XV0-$ZAqNzIV(08;g(1!#jOn`xcM-Vr1p1ZzF#R z{-|1*JW(SihC3wk$GW?B?~~$Y^)oZ;qU7XwcoON{RN2+@RV^u@q1k6sm5=K`C(S-% z(mSB}qMFrut5M;Ffm!KesU*+q>tmF69V^;ivwXbKuKMKgy_3(okV=dhSL@=w4q@Al zE4Kdl^~n`$t<8JR#rIcNekZeBp6RgnLd`|x#a?lT-VfFtb9#Q!;>oKGj7d62ha8QX zJbLlx`_s1^9D7qXWAA;(uQd8vivN4^$RI{gc>MLvg<}_J8N?;NO*$~*{efZUz0M37 zbCLaXRD6m0^S)+tCPyXYJ!4X*?XlOMJ!-_7ygtf(ZZ0&FuhqygI5Ozm9oC}BYg5n5 zFOh%oDq5L!a*~=;)niG4RL2a|KJTj3`a0yd1sU zWXlbi3*}Er*D6>Jtts=DpZ=j{MUwpFi6tBA_04uDg(zIN@*|H)(Wuy?)b+4m;T4@L_3rLp9Q*C=Zb4R^T-P57fr2#Q=XG>-5WyvKY#u+@2U3wXqHjg?^ ztGmKdCo7pl%`O{l2M+$}Ys;~h<$Z_iGB)n8Ht&z^GK!@EwqNWvF~5y_vnXe*J|p*F zM87eULSHTL2wP&X{k>C7uN8oTt@ZI^uJD87Io|WVM*4nwo0vUbHSYV^Y`KMBO)L!O zGP6$i)Qi$cW(Kd`rAAp;xQDLp}RI-!k$1>xDAm^2hAY%RJJ2+Gp|k z*S`|84p<{U26LB|el?ni(Eg^^-?F}I ze@nvi?{z<#==}4(!xo-@ulwV^*!jIO&-b8D8!~O#2*VWhk`vL~2l^E!SHC@QDbDOm z?)CkDC1rk@bY{thh~Bqmx|^)k8$M``ik^BC^11_i%UD=oI%eAO^`cVbGr7zW+kz1v>OyODHsX3o?GgneC{_028n7iX=YQ%0sGlNa*isbLW zAEMmLV(+M(_;6>Fi`s_#iJ^VXSX2LfD3!l=HnmppXOO-PFFX*zSt5+{eFe)4PWR`F4>2QDR`ft70Om(VNspu6GW7MOh zs=u?&74tp&OS%mz`(-qJZ9mQ1H{w|f^SY7KK#Lbz`>#$4h69eA8o709UX%aG!&`oN z%qd9r^k>-2ImJ+|xii4LK~-U=(j&(g?1~#*tyXwk-x|q<=9aNzs3+~fa~_}b#;u*Q z_3q8&(iK^*egDizCHf& z!(U4kZ1R#evrJaN3DY+ksYaHuN$a=V*mvBt+kDdHIjId53ueLcL-gd{kxs}`0VeXA08zgReJoYw>owHaF`JY2W-UBRt}L!Zsa+Vq?x)4DgGV^gy?nmS${QlD+v zt!morl}?ITH-X%xx6+En_FP~`Dzb~cys~uQZKahS-K)uNB30CpGx*57ph{< zR82d9_^WtaSo|GqA6c}N_by8vP%c$iDKGz5>^qrM%@O=n zhWEm23)MZ}(KTwveS2Jf?eoh6N@b5e%W}An?5ckacke&o)XIljXCyk0jMDJMeAjMMAJowUk0 zI=*aZ?tR7r3Eis!e(rmFwKHFbG7%# zt&2!uGv(}pxs`<%o?7PK+H-zLOb^P!@bN!vXa1x%_I%(DC_6QcA#)A4 zb}WB8XszQ?zl91c+skm>(3!8T)#{d-6c2H&(-Xx^lD}9;)K`Mc_UP!R4QC1 z4*6?vW~!W3#<_-Za!;eXzcD+U_GyA5T_-bD?r@sSRi#zKbef$T%v`s9R>LgKVi&*9sR-7ligf=d9F(0hy^6 zw}1W`t35P&R3D9Xa5wepc;Cg^Kb1{pFn1)%8aJ(2^B`WkFeA4|jZ31Xinh$s?gIw{ zQI^ld8#R&dOhgTs$~%U3n-^=TlBRTGr-EN)FY27d^M8f9=Z1VyIJLu{lbo~dXAXRG z|ILi8g`bAjX56eiWwWU6gQm@*x*PA}x2&1PRh^-iJ~vcj_VeQrgY<8jjat5Dy4oYM z=37#dliY_uAZ~qfeuO{NY<9smw`r@j(X2h&tj@bApBnPz!n)9E&xV}3PR6RvpDw>h0;XCC~e z&OV=%*;7SFljADK)755I`Hl9oi0!)Hba~myu+Pk@u(AuJJza0*JumedJlM_to=kSu zxlFlumi*aFxp);f`=((_Z=*l)Sc=lBX6@BKyaq=OjYU|BqWW?Bo@G_aPX;o?GF86OV&01=jSv&9p_ujI5>;0zLYzU~)kDQ%+-Sl|D z)+GV^_bomA!=&cSmTmX0yPQ_DOxU>M)yD8Wvyb=Q{>Zib-KLdA`d`2#fTbjDgU|8hkilb^Yil>vuVH#S`Dx`$r;rrBYu&CxSo z-!^!Lth&7H%|qQQGtSN#_59t{2kv&!<8-HNnK0zZfW^A<18T=79NprPaqNWEnCLNX zDv``t)`Ld%v~}73&SJ3+O-ARLOsr1y%2lPG9BSqyr)pP|H@t=_qxvrn*~Fas{r->c zLmP)Xycp%(Wu6GwycTbns&8K;Db%WMXgkv6Cr? z84~;Ov{%KmH2?2QcsH_#+Q?i#-DTc4uZm|T%t-2GQ<=V(7o)4OEK6?FL35cKGcpHF z9*~L9j_SYZ;DRoj4vrfZb9yKayDR&ri9@=TBE#SKcRYUtyx!{z_N7X=CC>!MzJ6Mz7d)GWq#{8G0)&_Etao z-0%MC3YC=V9THHM0}PR)11`>XKj0qmix} z?4vkSmVDBtA_GfBYT-imC+aSFjE2`EDYQwa8|XdL>`!i)iFho1eui#Vr0Xy>ZJvic zEGc99D*vr}+xWWKA9-VkkhpIH%xG4BVC>YFn}_@0D>AS&cdKbr5r%XR3Ht)h2PA`= zsa6J8EW0|ICl*mHo;|{B{C(&kcCnR=ZGy+xN=3!#x1!Mf>`MzSf9RLH7W zlVt^F(XF>$N0#OXTuZPi^uSwWC#84rSwuw~C3vr?9rYcwQ6FrW9-LyT2oz_m9JIL3 zXCbnwVpind$uq^0bQs3qG(~Rj=cVCbMszP)=-Dhf{I~@CoE(g6^nIQgy4|{cJ=k5G zG(SBQKDq3?YqbV2A@zPAD2CUZ+&Jo+9-<4pu?8&ECHs_a$(|{sBWjL1EmlyC+$v@Z zJimQ@YT9!Zm~)H4;|E^*s&5r||HTwy9kJ!m;1C&cLYy@G`+APo|NXc&(I%*%q>-KVrDs>rPyy5JhAdXd<1xUl zPO0cqwEEXGAdF2KF<~DxY*QZBp0AVYxh2kxS$y_fpqN8R@Zxgm*}hv3Spgg>Ya%n{ zS`%Q56e=hY!CC=LXeWqmp2y(CS$y;?o2zH|AV0?nRh>6m#byawfP7%1YcwGvUTY~& zn?oZ-+w(6fo3te#m4cs3n}{(g231RoaWr;~H9ZXbi^BlbRWI`e22(p{_O-@MdPiBh z*@~SCuu`K>_vAdq&U!EyGZUez^7uH-MxF#Q&H~^`v~^G*(ZYmSm4F#HPnrm>azho+ z5>>V`*M)4eG-$;wp03bNUR?}1VZgHgkfb$}KAg`J`bg{Zb!To?@+Y+nOdEz6teG#4 zFw|7~(&^d8kc7dI&R}|S)j{AZvsU$4aJQXs$S9@}ZZ6^XHPA;pAO_TDAYth>Y;-$e z>Lpbzg*Vpl6wcr-r;aRH8N$rrV@~hQQ z)_C(~xjeLr(C==D@|y1=B5r6Gbk#S}mrk&c)wj43HR;`s81pstS35v|_;u!MofGa3 z4qmrkPqSdiu+pp}9JJXQ9|)C=8ld)ULYXPu5OI#|45NR4nBFpoT5pib(=y&>x9@%$ z;R7Ks0fZE!96wwG3`m*TwT`)7$l(2VcXxLNy`RcIFNaJ9gl#`QzV{;raYB4NZ$sl) z0fOJ34+lvHNl8MdeYu}+NT;vYdC#IW7?=Uvf}=QIT+i7zH-9nDe*{rqn=v;)cjasL zR?f`^Ge~7|aCRQ~a#TkhZ*EfmE;99H=HjFHTz=$ckdq2HQykO$A0}ac{Xdw5+|(2L zeh|Hc;_=3298NVu%m!pKwLql!t;ByBQ=l1T3sG}LK|8p^x+?R1M8%q6D7(yVv$FA-YHm3 zpMAGfS@{o%hVHIXBu0jd65b-(5?jYHlRG0P@1RxS%hzb0zM=<9?-(GkiQ}AsOUto9 zpCefoxfN@S!c3yq)!=nk+2J=mwGHLJ7d z`kRrbtAE2h`#dA3vuxYos_}E}Z98n~?9CidY(A`wZNWZ(+Q8aJX`BPe^IPmmJ3NYO z+d!N35neSoqxnwt!@aZNgjZ_zxHwqhqB@T~Kwn#Q!}=pdb05OU0_#M`-+%q>$-B9k zK)xZMgA=j7<+qGFKwMim(0^6og52ZKP=jhgwPU&VQ=xMG7kSMTW)Z42LVb~1owR}A z;;^<6k9ZnoFQbl98U+f#CdGH=RLEwlWxza(r*5AeFV)E6nh^IzDNaKQ`5=Mrzf{EY zb8U`_niI1fV`@z0a-xyMW2dU_SWz;)v^)8kZ;*IneiV5n`XMxytFe?tShU>3<05S~ z<%>6Z48rz=V?-jxob4bk!Lyph>MEMvS&2igf&OwLe-rjalY?IJ)BiybDhF~{GOmg@w+E&xp|eL6}ewNcxmZ{E@8RL^%Ke2FXq$OQ!IG9u=D8l+bM7vR@GoB4azq8D zV9d|NXsah$yzt#A+e~53Vu@UNv|p@3nqqbVVi~zEXd5CxY|*ZP&7wOG@IS|x5F~@% z`53D!R&mVQb8m%<&2GU8>dcmzG1`(t5>UA~+htS>8yPVVT6!w{Ee&x&Wj+gz1I_IF zM;dAv7L}nSGeA}VjZyL%GaQvR3y;5e0AuEoWM~aq2vH7)=9zRF{2!$#$lAgP?pxa zY6vW9?sVapnhnM~QJUpx30B-c-}TS+>Kkm83xQ_?BmhtSWI$aM;oTG90bc1X0-Wi@ zU0=61P|O#z`BrUC>A=gF>Q1`k>l8_ekHWmQy33J1M|~afFla1jbFS6v#EWg=N55z@ z4eH4`E`Le3S=)lXnyIzRCF}rx$68-+zQ6jXeqd_{CMts85Hev~iW6=**sWy#2B5cm|eQ*Q;)dAMV)%A#y5Z5-D{#n4YQ-1NK_p~d;gBYex8;}>`0@h{w9 zF2voih3ZLYFloH*PXI+|TWyOwjw}Um?9OGkd^JIy_e9-8YiF&uvA|2d^ zB$`E)RI;|Zm?6JK_$h|QyU^^eQUyk&MfRA6ZbpFoeA~q3By=(pDFD*80o#2`hj9d_ z$vil>zcrSr?9^A*VJ*KahfutvwWFh)a>3IMekHxecC2!NI?EQ|zgO%0K1r3h2$^&gQBKBn!&T5av6T=_^Q;mmu^FNm})B6;s>5gIP!1e6>r19~)28Xu){7ka0 zBj$a0BiJ2_KZ=eaW;Oc)i{jTa2p{ajtJ?xT;Kd=Y(aoH@+YlLDL9wnJ6%Dd`5g2KS zBc#ixBSkdbwx-#s+^XjqRq(us2DHRGl!r5-8BPf}5Q@FQoABa`cu6!-S1o%BvrjUW zCsapLIo69aw^5cpOnLJPm-H>mnfM9U8YWXz$+_lP8K(lKTD%%?S(0vy+`0&7IK~SY&g-Kn`pF2QmBVyQ~l8V-|QUj!`u9 zEYjvobVusf(przaS`K3S?gWzM58hu2mE|96Uw<}G3YFCh<$uE|FwF5As`8g>J_-l{ zwd3!6FrNRN!Dy~8Ht!r%q)kY|LEh`Ap5p7xGsUo3rILrX{CQ_hIWlw}C}JFXjX|L=VgN6YT4`euB(; zK6W_%QkDz?TL^ErB9jMzTy&9T*vqa!LGV)-C(*4$>`tw{N(Nra^s{41xNdo7G1fLq zECA641#iJlZ!ah!aytrtnp(z3LUnp@Z7Y1o@eGKI(QGZb$_wxR)f=smyISS7`=S?v zp#!sKhfg{R`zPEf|s&6h5 znE;@q>T^>1JD@n-FR04-H`qDW~HIS^_+}Co%)rdD%@=oab!=!PW#b>=T~G-_PWqdoLCJ zPL)^ch)a8aZ&u)|887-|7AI-#I0g0gk#r__gRD^Lbl&xI&a7sl-~7_8|9z5C*eq9D zM>uzyDULdW#d3|lbslQx?5;pbOnlY`OS9W0>!sF~<#KAWbt*B|5;+HDh$+w_UFlcB zEhJf~M3K`PcK`H!zX)G(4Qj2B!rPkFrwph+gRM!{ra|1>s@D_ zaVOY8J7)t|ef;M1uQ9S=1M=V)qt}UT#4o`qK`og|M`=Adwjy36dhri6z<_7jAgpfR z4I*giY4PX+IWD?yJ)0R8uNx%q8JHWPc8>P)WgPRUP3A$%c!}JHJAEQG&Z5Ebl$kyR z>2mfKW{1bg#D;x+3Y{-3Ev2D1ay#5acE=;(R~D_>1VIP!6s2gy3RzC!$#HTE z^isgGjWumnILm894q;`s9O*H=rlzeD+=2T^3-ii-0HGF5%pN~odAQN9b0hB4l_BOj zEk+)FY!h%36;`rlX2^FdmbDo|txY}TCQYvl8f{ZK)-npFCc>bMNpM7gw@i_2`jz?OilVOp3}tDaqpYk*=VNfQ$8RW+L{7_MEx5i=~o=Q=igG6HQOe z#|-Bo``eJKv?kf$%h5pl!oKQ1<|i{14xEwgvQ~V^O1Pp38#U73a<4Wr$6uS&DxvrQs>dgOrhXC@zW#IGR9#WJ;$k&}a?e*cph%Jhd#tyq1w8}Y z%8K)Okk{y<@3$U7lK&)-UY+aLr8mX@2tLZ~5{Ub`6Wzf?Jh#``p^QIny~Pr~IwqIJ zZHn#TN8a{htR+wpjbf~wdQLqzq>nvyreRMB3>#cCJfq@!G~6W{hPxO}QLOp(_1t4N zR0)l#U7hL3Mm~XP8ry)RuHpWnc>ZV_{%3vk(X_=|s+qoCf52yy`(fyp zVIxebVqm^0wUUWt(RX$|sFxK&h?a>u;|N(v|xv;XiD7~kZaj+i63)!!j(6){KfvQ$1ru{jknN6Y1W z;NC4jm_oRmynRFwMHLnP5k%Mx97>VkS0z~pS>QSJ0a?g7^nX*&UzKFP-9j(}|EJhr zR2~PC0$uSYc2+BhaYJry_SSZaO@H5GTzJSOgA8X7*iANY$z>~KV85Sb<4 zGGvi8Y#gy&C4$5|r^3bHk!j(p+cGq6ZCsD&3R(9&7Go zIgm;$hfxUL&Hi|0TC`sB!Wa3OH+Ysz0_|Vf^is~juXc1VCJ#AIO@dP=XctE~w|nr_ z`qc&&$?KzU_MQ3}1KS+eH8?Lr@T5;479#wtghaCKt7b!K|4{f$vPmOkLSB_y?{j0) zio}G!fpSb^+!N49(sPHeJ;Ve4@f;4Lr`%!u1RlM@*!~9fPZf7GFYnZ?y*F5=DbR}V zpd)6Usn>HSqn|MPNI@Edaf>HUaKoOU-E5dPS9Ln~V7mluH-4=jAPa)gf^*tL{hI5y z4bNUukWG@8_EjPy>+4yt8u_^`71B?%x=~#RHB`(jvnf69qIh{qXTmL@%hry(zgt*A zDwm1>Scm>@i7G)-rBkfAR%)Szxb9n8U5D|R{W%$V;5uQ->+9t8apH|B#aKMG2$Mds z61+Io42$Fqza%MyrSbh=CR$TOc0wCTy+_pnt&Em3sJu;0e^o7s$(&C#ov$#tK&t{! zfW=6riORDbt$KBg(>JQ6c!J^sGqttA%2WUfmyISKQr+EgrG>pFl#{X9DmNxlG03R7 z$1rnKTg#{jRPv()qlPXL0sAjSGaImjWU=yaXt{SKp$d(;3!MXWeL@Qkzyt78i)9vp0LV@{*ugB-c{d|$T+z{R@UhtZ0h zlN3|JN6px^y*HMh&b4)2$z0F)SVwSXy5>dw#~bNs5Fx`0C(pf!T|}r&z&}64A!i$- zZLe+-H8;sxF9^Ayjk5ADuoR;e4^>lyj>*N+2aT@oFfmdV-_QCR?REbD zpvmn-fV8>UF>bsp3gc8hs=p~x;Je@8ix+(wO6pg7J0q7YE}~JlNf6q z0sdvEC#mBo`X#UVL{?Y8;2CDVfQVX zbuhj}nUy28fbvyv_Ggoe0lae(qfX%lTzYC`BK5l*2Wn#?h=m>FMGR$rArEM_B0uVv z{_L;63Dn;+a}u&F?qBl7xk2p!qRlq<>G@*xKD6AJvvyL&XFXHzHo3@4L>wBSdq3n} zrq!3Kd+1Yr-rI|Nx{RzE_A_U9dqfKd1^hcjH9~EkzqE#-4f4*g&c~F{gzE2wo!H4} zwLI%)bjFoCvd}SI{^6;JO${r0_(SC())_1CFw%CMMQuQ47hID=JnBWV@zI+xIW>fa zy)=8b2~?ufRj1V^7hpvdVb%sAX@%wk>srKmR->=>&F3Ktx>#f99Lxv{s5@{2m!$Tf z*_Q&ZQ_-SYbLRx~ZR4-co!dAuQsf$9M{M5wgxHpB86BUA zAlUGkIZ55ECh0q(S7Cl-L2zCKJ3devH}{*g9X6okHF-NkEW*Z?@9EWaRjEM9fIGg{ zfpLHKfFK4qzB&x*tx*|OoIyDULLkymHrn}>l*cZvLu1LEH~xdhf-rJ3V85t(+nDC5*-X4n|nA=FyhDKm% z$*;o=9$Py_$-AF4A-Y|v+jr#uW&FDLQC2u${2U40yHOYF_Ch&;cZ*r=t9s7&+4y=WU+A*Ro5vou$_ocoi?;_5CBj5wZI(qYk`>`#0op>HnG@9iZoTMJF0Ku zIk;=Hk^OU*el|!(&44ZbpIcYWE9z|mG0;NBS=?oC5+!jC=RRvjM(x+ulKS6!E%+GuT2W#dYG0*HBLH$)F7jEPk8x}uq_!~N`O zRDAU_N9rN}--q0zYiqKAAs}&OUNhE$j!i0%^nh;h@pKM7enD1pf2UP)R*EFT>e1Eu z6W7NF@?Wf^1OtkjbTM;n-;jN+8a*aAvBu9XQ(>hm~vt(p7Wr_KVnuN|`#!5F-L zi6YY#*kq%epcN@SRl6|vC3yvwGS0?2h3)u0JRVjh1qch}eFi;8-}4rY3qK`(r>rV; zwq??-Mm@;N(MOodekf%&1Q&n)J~1o~z4zM<5jRejYIOwByf+ zc}Zz`tgEynpPo#;9#`K_A_<54>}qEXJ8eKFZ)7a&(oCPL2b0QbEar&n( z_8M#!L~ZIHYgUSN&RZGYed={Mawix?7!;XhB53q2E040?m*o*SWxeZq=#%=~zs*uj z>f&jBpxA5#t8{>m>pGW(&9*FI8`57sFyDQv{W zW(u5L*;3oA)C*f)B?+2|WX6@ZZuC|V73{8Bu6fU^WOdk9-TRog?wz5xL^LlMB%w1z z>}yoC#%{*yWlk%jZA)HF;YvCyWjH)Zb8XZJ>rVGF5LRlqN;i~ohB`MF?F}IRk1uHF|`-n~hEF{A>w1i-V z;q0h0m^sVZ@Q+F*m?=3LUEu1~DNa27B^MH-(|^v{ASVf})Lv4I{O=tirqGI%00!t@ zVa<%%qS4{nN4uU`v;`H`07d`mCj@7N7CAcnwt>tJ&c|xcNc-&-bhAE`+VKK-qo#v* z&ceT1F(drd^Yc3y>1nNAKof@$ng&)4x2?E}3J=QB`pBQhqo$2~7M%_CnPo`*l3|7U zcumEj@f0org$>Qp(~fUWX&pGOh$Y--vB``J^L4~TVi)=aS)JhHcCKFi8mTEJr!&jXWiN63hsDxz9YH>zBHKz z#sru#f6s4SR|F6n33~^Wdl!X!AAQ^u1!$L8c>S}+7WjJlTz}BeIN8k>3TR65Nv9mc zU`g)5?!Cg1A6kYJZoX!0DL5ZQ`NB(jCvD65I`4F>JwM;viRcD=q+kK|E8T$!4_3DOu6NmNTj}? zb~p_o6@Nb{nM=5=`vo(T-Xqg`DG4Mob64Oe+OWY+yc$27Q5{%ZobbVEtaB->Z{;d| zC&qXGu__b{KehXkNg^f**xCHJc$xkA+I@cZ_rh!ZoArW_)~0`ih^o@!HQ@3bRZ>x2?H17p9$vPVhbZ$U6AaFXlP2S@cqI z)A75f2#$e02tBmY<?&_(FhL1HBd z7whVqW?Dgt`QEQ1cAAL6wx9`gbZCO!C#zelc3c+id(5B4}}4AqORoh^^t9 zCO1V4sW@RAeZqa*;xy1uF|qc4b$~J;>aP2~D+><(`pWAIc)MC2c`!H~ z_{h`B*j)?g+5O4j|Dix09~f92qG`1|b(EM`3W<))c~>bG!(r802Dfw3-%)KWFp6to z?+ULWB#WXAB8($%#9{1eTy_as%!G)+<@g7wagk=`C{JYtd`(HO9eKmGzwF$4>Mqo;B2i18C=8cGj zRv2{?{33BJC{>Uq0f7-7nQj~em;;t+tg2m}OlWAKt)RHjS)b1OQP5m+LH86ogG8f- zb1{C9@l~`ZIu$?jz>p(3%jHQ!60d# zO(mcy_@j5Q%^R;XUz{$=rr5$R+xp1xa?QPQ{RX?Oh73i Z{At9Pw-cvmR~+#3n8 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

Y>MKv<97s|04!o9@mcj2LV-?a8$7X5 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

`EKU#t%cMXM;(_^NpQh26tDL8 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 literal 0 HcmV?d00001 diff --git a/assets/rancher-monitoring/rancher-monitoring-102.0.4-rc1+up40.1.2.tgz b/assets/rancher-monitoring/rancher-monitoring-102.0.4-rc1+up40.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a32224b4c83b4a949fab55139d50dca7f70dd5c7 GIT binary patch literal 405663 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�(m1hx>Jm4kj!Ol{oF9inTW!I&zem(e6)J$M(I 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

{Wx9XSfpiJAs>4}_|T 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

ETfP|;;)jWq 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�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 literal 0 HcmV?d00001 diff --git a/charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/Chart.yaml b/charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/Chart.yaml new file mode 100644 index 0000000000..e46f939c52 --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+up3.17.10 diff --git a/charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/README.md b/charts/rancher-logging-crd/102.0.3-rc1+up3.17.10/README.md new file mode 100644 index 0000000000..d4beb54faf --- /dev/null +++ b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+up3.17.10/templates/logging-extensions.banzaicloud.io_eventtailers.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging-extensions.banzaicloud.io_hosttailers.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging-crd/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/.helmignore b/charts/rancher-logging/102.0.3-rc1+up3.17.10/.helmignore new file mode 100644 index 0000000000..50af031725 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/Chart.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/Chart.yaml new file mode 100644 index 0000000000..e3993da3e3 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10 diff --git a/charts/rancher-logging/102.0.3-rc1+up3.17.10/README.md b/charts/rancher-logging/102.0.3-rc1+up3.17.10/README.md new file mode 100644 index 0000000000..48a1a6a05a --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/app-readme.md b/charts/rancher-logging/102.0.3-rc1+up3.17.10/app-readme.md new file mode 100644 index 0000000000..994c597ee5 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/NOTES.txt b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/NOTES.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/_generic_logging.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/_generic_logging.yaml new file mode 100644 index 0000000000..1583fa4498 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/_helpers.tpl b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/_helpers.tpl new file mode 100644 index 0000000000..7f070904c1 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/clusterrole.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/clusterrole.yaml new file mode 100644 index 0000000000..a5d7a85c25 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/clusterrolebinding.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/clusterrolebinding.yaml new file mode 100644 index 0000000000..89d17d094f --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/crds.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/crds.yaml new file mode 100644 index 0000000000..f573652d04 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/deployment.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/deployment.yaml new file mode 100644 index 0000000000..e1ec64f6d6 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/aks/logging.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/aks/logging.yaml new file mode 100644 index 0000000000..54bb732505 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/eks/logging.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/eks/logging.yaml new file mode 100644 index 0000000000..2ba7860b13 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/gke/logging.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/gke/logging.yaml new file mode 100644 index 0000000000..6c834b12e5 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/k3s/configmap.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/k3s/configmap.yaml new file mode 100644 index 0000000000..aa454c8adf --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/k3s/daemonset.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/k3s/daemonset.yaml new file mode 100644 index 0000000000..e80c2b1c8b --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/loggings/kube-audit/logging.yaml b/charts/rancher-logging/102.0.3-rc1+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-rc1+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-rc1+up3.17.10/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke/configmap.yaml new file mode 100644 index 0000000000..252572a4ef --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke/daemonset.yaml new file mode 100644 index 0000000000..cc39a5cc49 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke2/configmap.yaml new file mode 100644 index 0000000000..3ca20be226 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/rke2/daemonset.yaml new file mode 100644 index 0000000000..ddc30f8893 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/loggings/root/logging.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/loggings/root/logging.yaml new file mode 100644 index 0000000000..d88159106d --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/psp.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/psp.yaml new file mode 100644 index 0000000000..e80bbc0dc7 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/service.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/service.yaml new file mode 100644 index 0000000000..f419ae2c48 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/serviceMonitor.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/serviceMonitor.yaml new file mode 100644 index 0000000000..1bb762cde5 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/serviceaccount.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/serviceaccount.yaml new file mode 100644 index 0000000000..bb97cf1084 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/userroles.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/userroles.yaml new file mode 100644 index 0000000000..f4136b09a4 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/validate-install-crd.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-install-crd.yaml new file mode 100644 index 0000000000..77fc8047c9 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/validate-install.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-install.yaml new file mode 100644 index 0000000000..bd624cc4b4 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/templates/validate-psp-install.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/templates/validate-psp-install.yaml new file mode 100644 index 0000000000..a30c59d3b7 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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-rc1+up3.17.10/values.yaml b/charts/rancher-logging/102.0.3-rc1+up3.17.10/values.yaml new file mode 100644 index 0000000000..40b3dbac12 --- /dev/null +++ b/charts/rancher-logging/102.0.3-rc1+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/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/Chart.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/Chart.yaml new file mode 100644 index 0000000000..871806dbdb --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/Chart.yaml @@ -0,0 +1,10 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-monitoring-system + catalog.cattle.io/release-name: rancher-monitoring-crd +apiVersion: v1 +description: Installs the CRDs for rancher-monitoring. +name: rancher-monitoring-crd +type: application +version: 102.0.4-rc1+up40.1.2 diff --git a/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/README.md b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/README.md new file mode 100644 index 0000000000..e0b63e0268 --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/README.md @@ -0,0 +1,24 @@ +# rancher-monitoring-crd +A Rancher chart that installs the CRDs used by rancher-monitoring. + +## How does this chart work? + +This chart marshalls all of the CRD files placed in the `crd-manifest` directory into a ConfigMap that is installed onto a cluster alongside relevant RBAC (ServiceAccount, ClusterRoleBinding, ClusterRole, and PodSecurityPolicy). + +Once the relevant dependent resourcees are installed / upgraded / rolled back, this chart executes a post-install / post-upgrade / post-rollback Job that: +- Patches any existing versions of the CRDs contained within the `crd-manifest` on the cluster to set `spec.preserveUnknownFields=false`; this step is required since, based on [Kubernetes docs](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning) and a [known workaround](https://github.com/kubernetes-sigs/controller-tools/issues/476#issuecomment-691519936), such CRDs cannot be upgraded normally from `apiextensions.k8s.io/v1beta1` to `apiextensions.k8s.io/v1`. +- Runs a `kubectl apply` on the CRDs that are contained within the crd-manifest ConfigMap to upgrade CRDs in the cluster + +On an uninstall, this chart executes a separate post-delete Job that: +- Patches any existing versions of the CRDs contained within `crd-manifest` on the cluster to set `metadata.finalizers=[]` +- Runs a `kubectl delete` on the CRDs that are contained within the crd-manifest ConfigMap to clean up the CRDs from the cluster + +Note: If the relevant CRDs already existed in the cluster at the time of install, this chart will absorb ownership of the lifecycle of those CRDs; therefore, on a `helm uninstall`, those CRDs will also be removed from the cluster alongside this chart. + +## Why can't we just place the CRDs in the templates/ directory of the main chart? + +In Helm today, you cannot declare a CRD and declare a resource of that CRD's kind in templates/ without encountering a failure on render. + +## [Helm 3] Why can't we just place the CRDs in the crds/ directory of the main chart? + +The Helm 3 `crds/` directory only supports the installation of CRDs, but does not support the upgrade and removal of CRDs, unlike what this chart facilitiates. \ No newline at end of file diff --git a/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagerconfigs.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagerconfigs.yaml new file mode 100644 index 0000000000..7863a2bc88 --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagerconfigs.yaml @@ -0,0 +1,4475 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: alertmanagerconfigs.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + categories: + - prometheus-operator + kind: AlertmanagerConfig + listKind: AlertmanagerConfigList + plural: alertmanagerconfigs + shortNames: + - amcfg + singular: alertmanagerconfig + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to + be aggregated across multiple namespaces configuring one Alertmanager cluster. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AlertmanagerConfigSpec is a specification of the desired + behavior of the Alertmanager configuration. By definition, the Alertmanager + configuration only applies to alerts for which the `namespace` label + is equal to the namespace of the AlertmanagerConfig resource. + properties: + inhibitRules: + description: List of inhibition rules. The rules will only apply to + alerts matching the resource’s namespace. + items: + description: InhibitRule defines an inhibition rule that allows + to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule + properties: + equal: + description: Labels that must have an equal value in the source + and target alert for the inhibition to take effect. + items: + type: string + type: array + sourceMatch: + description: Matchers for which one or more alerts have to exist + for the inhibition to take effect. The operator enforces that + the alert matches the resource’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 + 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.4-rc1+up40.1.2/crd-manifest/crd-alertmanagers.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-alertmanagers.yaml new file mode 100644 index 0000000000..236f26b912 --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+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.4-rc1+up40.1.2/crd-manifest/crd-podmonitors.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-podmonitors.yaml new file mode 100644 index 0000000000..f6e208c14b --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+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.4-rc1+up40.1.2/crd-manifest/crd-probes.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-probes.yaml new file mode 100644 index 0000000000..014ef2743a --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+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.4-rc1+up40.1.2/crd-manifest/crd-prometheuses.yaml b/charts/rancher-monitoring-crd/102.0.4-rc1+up40.1.2/crd-manifest/crd-prometheuses.yaml new file mode 100644 index 0000000000..d9d97405be --- /dev/null +++ b/charts/rancher-monitoring-crd/102.0.4-rc1+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_